Alex,
I am sorry, I don't have solution for your problem, but maybe I will work
soon on same issue.
Are you using Drools 6.0.0.CR2 ? If yes, where you able to overcome this
problem
http://drools.46999.n3.nabble.com/rules-users-classloader-problem-in-Droo...
Do you mind to share your plugin code with community ?
Best regards,
Martin
2013/9/3 Alexander Herwix <alex(a)herwix.com>
Hey guys,
I'm working on a Grails plugin for Drools/Jbpm 6 and I have trouble to get
persistence working in a user friendly way. It would be awesome if someone
with a better understanding of drools and especially drools spring
integration could help me to figure this out :)
I have considered multiple approaches:
- Use a spring LocalContainerEntityManagerFactoryBean with a local
JpaTransactionManager to configure a KieEnvironment via Spring.
I basically got this working, but this doesn't provide real integration
with Grails, as there are 2 seperate local TransactionManagers involved -
limiting the ability to integrate drools in the grails app.
- Use JTA-Transactions.
As I want the plugin to be as user friendly as possible I would like to
keep using the default tomcat container for development. There is the
Atomikos Plugin for Grails which configures Grails to work with JTA. This
works pretty nicely and should suffice for the development environment.
My problem is integrating the Atomikos backed JTATransactionManager with
the drools 6 spring environment configuration as I have not much experience
with JTA. I have looked at the Tests for Kie-Spring and looked at as much
documentation as I could find, but I can't seem to figure this out.
This is what I use to configure the environment via spring (in Grails
groovy syntax)
jbpmGlobals(MapGlobalResolver)
dacceptor(ClassObjectMarshallingStrategyAcceptor,['*.*'])
kie.kstore(id:'kiestore')
kie.environment(id: 'jbpmEnv'){
kie.'entity-manager-factory'(ref:'entityManagerFactory')
kie.globals(ref:'jbpmGlobals')
kie.'object-marshalling-strategies'(){
kie.'jpa-placeholder-resolver-strategy'()
kie.'serializable-placeholder-resolver-strategy'('strategy-acceptor-ref':"dacceptor")
}
}
//Tried to wrap my JtaTransactionManager with KieSpringTransactionManager
jbpmTransactionManager(KieSpringTransactionManager,
ref('transactionManager'))
the environment value for transactionManager cannot be set here, because
the parser expects a JpaTransactionManager. I tried to add the
transactionManager manually to the environment and found the
KieSpringTransactionManager, which looked like it could help me somehow,
but in the end, there is always the default implementation of the
JtaTransactionManager used which can't find the transactionManager that I
configured.
Error:
NamingException occurred when processing request: [GET] /bpm/test/testJbpm
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.drools.persistence.SingleSessionCommandService.initTransactionManager(SingleSessionCommandService.java:325)
at
org.drools.persistence.SingleSessionCommandService.<init>(SingleSessionCommandService.java:114)
at
org.drools.persistence.jpa.KnowledgeStoreServiceImpl.buildCommandService(KnowledgeStoreServiceImpl.java:129)
at
org.drools.persistence.jpa.KnowledgeStoreServiceImpl.newKieSession(KnowledgeStoreServiceImpl.java:67)
at
org.drools.persistence.jpa.KnowledgeStoreServiceImpl.newKieSession(KnowledgeStoreServiceImpl.java:36)
at bpm.TestController.testJbpm(TestController.groovy:119)
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)
I would be glad about any input.
Cheers, Alex
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users