On Mar 19, 2009, at 8:29 AM, <[email protected]> <[email protected]
> wrote:
Hi David,
we have a little success :-) The database error is gone now. You are
right it has to be
<property name="hibernate.connection.datasource">java:comp/env/
TestDS</property>
in the hibernate.cfg.xml file and
<res-ref-name>TestDS</res-ref-name>
in the ejb-jar.xml.
But now I end up in the next error that the UserTransaction cannot
be found:
Caused by: javax.naming.NameNotFoundException: Name "java:/
TransactionManager" 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
.transaction
.JNDITransactionManagerLookup
.getTransactionManager(JNDITransactionManagerLookup.java:23)
... 72 more
I don't know if this error is related to a similar error I had once
and Jean-Louis helped me out, that you sometime have to call new
InitialContext() twice [1]. But here, within the hibernate code, I
cannot call new InitialContext() twice.
Any further hints?
I suspect the issue is related to the Hibernate transaction manager
lookup strategy. Give this a try:
<!-- JTA transaction properties (begin) -->
<property
name
=
"hibernate
.transaction
.factory_class">org.hibernate.transaction.JTATransactionFactory</
property>
<property
name
=
"hibernate
.transaction
.manager_lookup_class
">org.apache.openejb.hibernate.TransactionManagerLookup</property>
<!-- JTA transaction properties (end) -->
<!-- CMT transaction properties (begin) ===
<property
name
=
"hibernate
.transaction
.factory_class">org.hibernate.transaction.CMTTransactionFactory</
property>
<property
name
=
"hibernate
.transaction
.manager_lookup_class
">org.apache.openejb.hibernate.TransactionManagerLookup</property>
==== CMT transaction properties (end) -->
If you need something a bit more dynamic -- if you're using jboss in
production and don't want different settings -- then this page has a
good suggestion on how to more dynamically do the transaction manager
lookup:
http://openejb.apache.org/3.0/hibernate.html
Hope that helps!
-David
-----Ursprüngliche Nachricht-----
Von: David Blevins [mailto:[email protected]]
Gesendet: Donnerstag, 19. März 2009 00:54
An: [email protected]
Betreff: Re: AW: AW: AW: How to use JBPM with openEJB?
On Mar 17, 2009, at 5:11 AM, <[email protected]> <[email protected]
> wrote:
Hi David,
I send you my ejb-jar.xml and hibernate.cfg.xml.
The ejb-jar.xml is based on the ejb-jar.xml from the jbpm-
enterprise.jar. I only add the messaging-type and changed some JNDI
names. The hibernate.cfg.xml is also based on default configuration
from jbpm. I only add the hibernate.connection.datasource property.
I also add the jbpm.cfg.xml defining the
JtaDbPersistenceServiceFactory, as mentioned in the documentation.
I hope the files helps to get more light in this problem.
I think I see something. Looking at this section of the ejb-jar.xml
<resource-ref>
<description>
Logical name of the data source that provides connections
to the persistence service. Must
match the hibernate.connection.datasource property in the
Hibernate configuration file.
</description>
<!-- CHANGES <res-ref-name>jdbc/JbpmDataSource</res-ref-name>
-->
<res-ref-name>TestDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Based on that comment, the hibernate.connection.datasource should be
configured like so:
<!-- DataSource properties (begin) -->
<property name="hibernate.connection.datasource">java:comp/env/
TestDS</property>
<!-- DataSource properties (end) -->
Also, I'm not too sure about this last comment but it seems strange
to have the "hibernate.connection.driver_class" and other JDBC
related properties set in addition to using a container supplied
datasource.
I'm used to seeing this as a one or the other kind of thing: either
you're in a managed environment and use a datasource or in a non-
managed environment and create connections yourself. I know that
when doing the same with OpenJPA it will cause problems, not sure if
the same applies with Hibernate.
-David