Alexander Herwix [
https://community.jboss.org/people/herwix] created the discussion
"JBPM6 Spring Persistence and Runtime Manager"
To view the discussion, visit: 
https://community.jboss.org/message/833455#833455
--------------------------------------------------------------
Hey guys,
I have been trying to integrate JBPM6 in my Spring-Hibernate based Grails application, but
it seems that I'm stuck and maybe you guys here could point me in the right
direction.
I am trying to get the RuntimeManager working with a local spring transaction scheme. I
have tried a lot of stuff but can't seem to find the right approach.
I have set up a EntityManagerFactory bean, which loads the persistence-unit
org.jbpm.presistence.jpa (with transaction-type "Resource_local") with the
org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter.
I have also set up a org.springframework.orm.jpa.JpaTransactionManager bean.
When I now try to get a runtimeEngine via the RuntimeEnvironmentBuilder:
RuntimeEnvironment environment = RuntimeEnvironmentBuilder.getDefaultInMemory()
                .userGroupCallback(getUserGroupCallback())
                .entityManagerFactory(entityManagerFactory)
                .registerableItemsFactory(new
KModuleRegisterableItemsFactory(kcontainer,''))
               
.addEnvironmentEntry(EnvironmentName.TRANSACTION_MANAGER,jbpmTransactionManager)
                .get();
  
RuntimeManager manager =
RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment);
 
RuntimeEngine runtime = manager.getRuntimeEngine(ProcessInstanceIdContext.get());
 
I get the following error: 
NamingException occurred when processing request: [GET] /bpm/test/
Cannot create resource instance. Stacktrace follows:
javax.naming.NamingException: Cannot create resource instance
          at
org.apache.naming.factory.TransactionFactory.getObjectInstance(TransactionFactory.java:116)
          at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)
          at org.apache.naming.NamingContext.lookup(NamingContext.java:843)
          at org.apache.naming.NamingContext.lookup(NamingContext.java:154)
          at org.apache.naming.NamingContext.lookup(NamingContext.java:831)
          at org.apache.naming.NamingContext.lookup(NamingContext.java:168)
          at org.apache.naming.SelectorContext.lookup(SelectorContext.java:158)
          at javax.naming.InitialContext.lookup(InitialContext.java:411)
          at
org.drools.persistence.jta.JtaTransactionManager.findUserTransaction(JtaTransactionManager.java:122)
          at
org.drools.persistence.jta.JtaTransactionManager.<init>(JtaTransactionManager.java:69)
          at
org.jbpm.shared.services.impl.JbpmJTATransactionManager.<init>(JbpmJTATransactionManager.java:39)
          at
org.jbpm.runtime.manager.impl.factory.LocalTaskServiceFactory.newTaskService(LocalTaskServiceFactory.java:48)
          at
org.jbpm.runtime.manager.impl.PerProcessInstanceRuntimeManager.getRuntimeEngine(PerProcessInstanceRuntimeManager.java:94)
          at
org.jbpm.runtime.manager.impl.PerProcessInstanceRuntimeManager.init(PerProcessInstanceRuntimeManager.java:258)
          at
org.jbpm.runtime.manager.impl.RuntimeManagerFactoryImpl.newPerProcessInstanceRuntimeManager(RuntimeManagerFactoryImpl.java:103)
          at
org.jbpm.runtime.manager.impl.RuntimeManagerFactoryImpl.newPerProcessInstanceRuntimeManager(RuntimeManagerFactoryImpl.java:94)
          at bpm.TestController$$EOFBIT6u.index(TestController.groovy:82)
          at
grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:200)
          at
grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)
          at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
          at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
          at java.lang.Thread.run(Thread.java:722)
Looking at the stacktrace I found the the LocalTaskServiceFactory where the documentation
says:
/**
 * Regular <code>TaskServiceFactory</code> implementation that shall be used
for non CDI environments.
 * Creates new <code>TaskService</code> instance for every call to the
factory.
 * <code>TaskService</code> instance will be equipped with
<code>JbpmJTATransactionManager</code> 
 * for transaction management, this is mandatory as it must participate in already active
 * transaction if such exists.
 */
So it seems it's not possible to use the RuntimeManager without a JTA Transaction
Manager? I thought it might be possible to supply the localTransactionManager via the
Environment? But I am fishing in the dark.
If I am totally off the mark here in what I am doing, I would appreciate any pointer into
the recommended way to integrate jbpm6 (and especially the runtime manager) into a
spring-hibernate based application. I have looked at kie-spring, but there is little jbpm
specific stuff. 
Cheers, Alex
--------------------------------------------------------------
Reply to this message by going to Community
[
https://community.jboss.org/message/833455#833455]
Start a new discussion in jBPM Development at Community
[
https://community.jboss.org/choose-container!input.jspa?contentType=1&...]