On Mon, 2007-10-15 at 11:06 +0200, Martin Vysny wrote: > On Fri, 2007-10-12 at 13:54 -0700, Dain Sundstrom wrote: > > On Oct 12, 2007, at 2:41 AM, Martin Vysny wrote: > > > > > Hi guys, > > > I tried to use Hibernate in OpenEJB (our application unfortunately > > > still does not use JPA - it uses Hibernate directly instead). However, > > > it seems there is a version clash: OpenEJB requires ASM 2.2.3 while > > > Hibernate 3.2.4 requires ASM 1.5.3 and they seem to be incompatible: > > > > > > ... > > > > > > Have you guys tried to use OpenEJB with Hibernate? Can you please > > > provide me with some hints? Which one is harder: modify Hibernate > > > to use 2.2.3 or OpenEJB to use 1.5.3? :-) > > > > I wouldn't try to modify either; I'd repackage. Most projects seem > > to repackage asm to avoid such conflicts, and I'd guess they do it > > because Hibernate is not repackaging :) > > > > The ASM FAQ suggests (http://asm.objectweb.org/doc/faq.html) jarjar. > > If you can figure out how to do this, that would be awesome. We can > > simply add the repackaged jar to our svn repository. > > > > -dain > > > > Thanks very much for the idea, but we found an easier way to resolve > this issue: [1]. Now can you help us where to look for > TransactionManager in JNDI? Hibernate requires it when using CMP > persistency. Thanks!
Okay, it's java:comp/TransactionManager from within a bean, or
java:openejb/TransactionManager from outside a bean ;) We are using
Hibernate via the JPA interface as follows:
package com.whitestein.fe.impl.config;
import org.hibernate.transaction.JNDITransactionManagerLookup;
/**
* Hibernate Transaction manager lookup strategy for OpenEJB.
*
* @author mvy
*/
public class OpenEJBTransactionManagerLookup extends
JNDITransactionManagerLookup {
@Override
protected String getName() {
return "java:comp/TransactionManager"; //$NON-NLS-1$
}
public String getUserTransactionName() {
return "java:comp/UserTransaction"; //$NON-NLS-1$
}
}
properties.put(Environment.DIALECT, dbDialect);
properties.put(Environment.TRANSACTION_MANAGER_STRATEGY,
OpenEJBTransactionManagerLookup.class.getName());
properties.put(Environment.TRANSACTION_STRATEGY,
CMTTransactionFactory.class.getName());
properties.put(Environment.JNDI_CLASS,
"org.apache.openejb.client.LocalInitialContextFactory");
entityManagerFactory = Persistence.createEntityManagerFactory(
persistenceUnitName, properties);
This way, Hibernate joins the container transactions.
Martin Vysny
signature.asc
Description: This is a digitally signed message part
