org.hibernate.engine.transaction.jta.platform.internal.JBossAppServerJtaPlatform Maven / Gradle / Ivy
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or .
*/
package org.hibernate.engine.transaction.jta.platform.internal;
import javax.transaction.TransactionManager;
import javax.transaction.UserTransaction;
import org.hibernate.engine.jndi.JndiException;
/**
* JtaPlatform definition for JBoss Application Server.
*
* @author Steve Ebersole
*/
public class JBossAppServerJtaPlatform extends AbstractJtaPlatform {
public static final String AS7_TM_NAME = "java:jboss/TransactionManager";
public static final String AS4_TM_NAME = "java:/TransactionManager";
public static final String JBOSS_UT_NAME = "java:jboss/UserTransaction";
public static final String UT_NAME = "java:comp/UserTransaction";
@Override
protected boolean canCacheUserTransactionByDefault() {
return true;
}
@Override
protected boolean canCacheTransactionManagerByDefault() {
return true;
}
@Override
protected TransactionManager locateTransactionManager() {
try {
return (TransactionManager) jndiService().locate( AS7_TM_NAME );
}
catch (JndiException jndiException) {
try {
return (TransactionManager) jndiService().locate( AS4_TM_NAME );
}
catch (JndiException jndiExceptionInner) {
throw new JndiException( "unable to find transaction manager", jndiException );
}
}
}
@Override
protected UserTransaction locateUserTransaction() {
try {
return (UserTransaction) jndiService().locate( JBOSS_UT_NAME );
}
catch (JndiException jndiException) {
try {
return (UserTransaction) jndiService().locate( UT_NAME );
}
catch (JndiException jndiExceptionInner) {
throw new JndiException( "unable to find UserTransaction", jndiException );
}
}
}
}