Hello Chris,
Thanks for your email. As you will notice I posted a related question on
http://opensource.atlassian.com/projects/hibernate/browse/HHH-3110 this
morning.
> I haven't looked closely enough to comment on the query problem but I
> can confirm that your assessment above is correct. JTATransaction has
> and always has had a dependency on JNDI. It's only been recently
> uncovered because a) we changed how/when the transaction was
> instantiated and b) it turns out some folks are using JTA services
> outside the container that don't bind to JNDI. If you want to use such
> a service, you're exactly right - also use a JNDI service or create a
> TransactionFactory/Transaction combo that doesn't need JNDI.
>
The strange thing is that I'm also using JNDI with my Transaction
Manager - System.setProperty("java.naming.factory.initial",
"org.apache.naming.java.javaURLContextFactory");.
And Hibernate is fetching the JTA service using the following lookup
class:
http://docs.codehaus.org/display/BTM/Hibernate#Hibernate-Transactionmanag...
Using the following Hibernate config:
<property name="transaction.manager_lookup_class">
db.BitronixTransactionManagerLookup
</property>
<property name="transaction.factory_class">
org.hibernate.transaction.JTATransactionFactory
</property>
As I understood from your post on issue HHH-3110, Hibernate should not
use a lookup class anymore but create (instance) the Transaction
Manager. Am I right ? If so, to do this, I should implement a
org.hibernate.transaction.TransactionFactory for my transaction
manager ?
You can do whichever works. Using the default JTATransaction, you'll
need JNDI. But you can alternatively provide your own Impl that does
not rely on JNDI. Your choice really, and all this is pluggable so
Hibernate won't care.
-Chris