package org.jboss.tm.usertx.client;
import org.jboss.tm.TransactionPropagationContextUtil;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.Reference;
import javax.naming.Name;
import javax.naming.NamingException;
import javax.naming.spi.ObjectFactory;
import javax.transaction.UserTransaction;
public class ClientUserTransactionObjectFactory
implements ObjectFactory
{
static private UserTransaction userTransaction = null;
static private UserTransaction getUserTransaction()
{
if (userTransaction == null) {
try {
new InitialContext().lookup("java:/TransactionManager");
userTransaction = ServerVMClientUserTransaction.getSingleton();
} catch (NamingException ex) {
ClientUserTransaction cut = ClientUserTransaction.getSingleton();
TransactionPropagationContextUtil.setTPCFactory(cut);
userTransaction = cut;
}
}
return userTransaction;
}
public Object getObjectInstance(Object obj, Name name,
Context nameCtx, Hashtable environment)
throws Exception
{
Reference ref = (Reference)obj;
if (!ref.getClassName().equals(ClientUserTransaction.class.getName()))
return null;
return getUserTransaction();
}
}