Hi experts,
I try to get JBPM working with openEJB. The problem is that JBPM cannot get the
datasource for the hibernate session.
As far as I found out is that the JBPM uses an own InitialContext.
I try to configure the same initial context properties as for the direct
initial context lookup like (part of the hibernate.cfg.xml):
<hibernate-configuration>
<session-factory>
<property
name="hibernate.connection.datasource">java:openejb/Resource/TestDS</property>
<property
name="hibernate.jndi.java.naming.factory.initial">org.apache.openejb.client.LocalInitialContextFactory</property>
<property
name="hibernate.jndi.openejb.deployments.classpath.ear">true</property>
<property
name="hibernate.jndi.openejb.jndiname.format">{deploymentId}/{interfaceType.annotationName}</property>
<property name="hibernate.jndi.openejb.altdd.prefix">test</property>
<property
name="hibernate.jndi.openejb.validation.output.level">VERBOSE</property>
...
Also I found out the the database is registered under
"java:openejb/Resource/TestDS", where I can access it via lookup in the initial
context, but it's not there as jbpm build this session.
Here also a part of the stack trace:
2009-03-09 15:03:51,334 INFO org.hibernate.util.NamingHelper:26 - JNDI
InitialContext properties:{java.naming.factory.initial=org.apache.openejb.clie
nt.LocalInitialContextFactory, openejb.validation.output.level=VERBOSE,
openejb.altdd.prefix=test, openejb.jndiname.format={deploymentId}/{interfaceTy
pe.annotationName}, openejb.deployments.classpath.ear=true}
2009-03-09 15:03:51,334 FATAL
org.hibernate.connection.DatasourceConnectionProvider:55 - Could not find
datasource: java:openejb/Resource/TestDS
javax.naming.NameNotFoundException: Name "java:openejb/Resource/TestDS" not
found.
at
org.apache.openejb.core.ivm.naming.IvmContext.federate(IvmContext.java:172)
at
org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:129)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at
org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:52)
at
org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
at
org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:56)
at
org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:414)
at
org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62)
at
org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2073)
at
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1298)
at
org.jbpm.persistence.db.DbPersistenceServiceFactory.getSessionFactory(DbPersistenceServiceFactory.java:105)
at
org.jbpm.persistence.db.DbPersistenceService.getSessionFactory(DbPersistenceService.java:95)
at
org.jbpm.persistence.jta.JtaDbPersistenceService.isJtaTransactionInProgress(JtaDbPersistenceService.java:68)
at
org.jbpm.persistence.jta.JtaDbPersistenceService.<init>(JtaDbPersistenceService.java:46)
at
org.jbpm.persistence.jta.JtaDbPersistenceServiceFactory.openService(JtaDbPersistenceServiceFactory.java:66)
at org.jbpm.svc.Services.getService(Services.java:177)
at org.jbpm.svc.Services.getPersistenceService(Services.java:231)
at org.jbpm.JbpmContext.getPersistenceService(JbpmContext.java:705)
at org.jbpm.JbpmContext.getGraphSession(JbpmContext.java:638)
I'm using openEJB 3.1 and JBPM 3.2.5.SP2.
I hope someone knows how to use JBPM within openEJB or can give me a hint.
Regards
Marco