private void startProducer() {
JCRProducerConfigurationService producerConfigurationService;
try {
JCRPersister persister = new JCRPersister(container, JCRPersister.WSRP_WORKSPACE_NAME);
persister.initializeBuilderFor(JCRProducerConfigurationService.mappingClasses);
producerConfigurationService = new JCRProducerConfigurationService(persister);
producerConfigurationService.setConfigurationIS(producerConfigurationIS);
producerConfigurationService.reloadConfiguration();
} catch (Exception e) {
log.debug("Couldn't load WSRP producer configuration from " + producerConfigLocation, e);
throw new RuntimeException("Couldn't load WSRP producer configuration from " + producerConfigLocation, e);
}
container.registerComponentInstance(ProducerConfigurationService.class, producerConfigurationService);
RegistrationPersistenceManager registrationPersistenceManager;
try {
JCRPersister persister = new JCRPersister(container, JCRPersister.WSRP_WORKSPACE_NAME);
persister.initializeBuilderFor(JCRRegistrationPersistenceManager.mappingClasses);
registrationPersistenceManager = new JCRRegistrationPersistenceManager(persister);
} catch (Exception e) {
log.debug("Couldn't instantiate RegistrationPersistenceManager", e);
throw new RuntimeException("Couldn't instantiate RegistrationPersistenceManager", e);
}
RegistrationManager registrationManager = new RegistrationManagerImpl();
registrationManager.setPersistenceManager(registrationPersistenceManager);
// retrieve container portlet invoker from eXo kernel
ContainerPortletInvoker containerPortletInvoker = (ContainerPortletInvoker) container
.getComponentInstanceOfType(ContainerPortletInvoker.class);
// iterate over the container stack so that we can insert the WSRP-specific event payload interceptor
PortletInvokerInterceptor previous = containerPortletInvoker;
PortletInvokerInterceptor next = previous;
do {
PortletInvoker invoker = previous.getNext();
if (invoker instanceof EventPayloadInterceptor) {
// create a new WSRPEventPayloadInterceptor and make its next one the current event payload invoker
WSRPEventPayloadInterceptor eventPayloadInterceptor = new WSRPEventPayloadInterceptor();
eventPayloadInterceptor.setNext(invoker);
// replace the current event payload interceptor by the WSRP-specific one
previous.setNext(eventPayloadInterceptor);
// we're done
break;
} else {
previous = next;
if (invoker instanceof PortletInvokerInterceptor) {
next = (PortletInvokerInterceptor) invoker;
} else {
next = null;
}
}
} while (next != null);
// The producer persistence manager
PortletStatePersistenceManager producerPersistenceManager;
try {
JCRPersister persister = new JCRPersister(container, JCRPersister.PORTLET_STATES_WORKSPACE_NAME);
persister.initializeBuilderFor(JCRPortletStatePersistenceManager.mappingClasses);
producerPersistenceManager = new JCRPortletStatePersistenceManager(persister);
} catch (Exception e) {
log.debug("Couldn't instantiate PortletStatePersistenceManager", e);
throw new RuntimeException("Couldn't instantiate PortletStatePersistenceManager", e);