Thank very much Juan and Mauricio. Our applications create the connection as mode application managed entity manager. I'll trying to get a valid EntityManager from an instance of hibernate.Session. I will have the option to add a JTA transaction manager as plan B.
We tested code that we have seen on the web, but as nothing has worked so I began to doubt.
First way
http://community.jboss.org/thread/163990
Code
{{{
org.hibernate.Session session = ...
Configuration cfg = new Configuration();
cfg.configure("/hibernate.cfg.xml");
EntityManagerFactory emf =
new EntityManagerFactoryImpl(session.getSessionFactory(), PersistenceUnitTransactionType.RESOURCE_LOCAL, true, null, cfg);
Environment env = KnowledgeBaseFactory.newEnvironment();
env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);
StatefulKnowledgeSession ksession = JPAKnowledgeService.newStatefulKnowledgeSession(kbase, null, env);
}}}
Error
{{{
21/12/2011 08:38:10 [ERROR] (org.drools.persistence.SingleSessionCommandService) - Could not commit session
java.lang.NullPointerException
at org.drools.persistence.jta.JtaTransactionManager.getStatus(JtaTransactionManager.java:205)
}}}}
Second way
http://docs.jboss.org/drools/release/5.3.0.CR1/drools-expert-docs/html/ch04.html#d0e2134
http://docs.jboss.org/jbpm/v5.1/javadocs/org/drools/runtime/StatefulKnowledgeSession.html
Code
{{{
org.hibernate.Session session = ...
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
ksession.setGlobal("hbnSession", session);
}}}
Error
{{{
java.lang.RuntimeException: Unexpected global [hbnSession]
at org.drools.common.AbstractWorkingMemory.setGlobal(AbstractWorkingMemory.java:586)
at org.drools.impl.StatefulKnowledgeSessionImpl.setGlobal(StatefulKnowledgeSessionImpl.java:332)
}}}
If I get the code that works I'll put it here.
Greetings