}
public void begin()
throws NotSupportedException, SystemException
{
TransactionManager tm = con.getTransactionManager();
int oldTimeout = -1;
if (tm instanceof TransactionTimeoutConfiguration)
oldTimeout = ((TransactionTimeoutConfiguration) tm).getTransactionTimeout();
// Set the timeout value
tm.setTransactionTimeout(timeout);
try
{
// Start the transaction
tm.begin();
//notify checked out connections
EJB2UserTransactionProvider.getSingleton().userTransactionStarted();
if (tsl != null)
tsl.userTransactionStarted();
Transaction tx = tm.getTransaction();
if (trace)
log.trace("UserTx begin: " + tx);
// keep track of the transaction in enterprise context for BMT
setTransaction(tx);
}
finally
{
// Reset the transaction timeout (if we know what it was)
if (oldTimeout != -1)
tm.setTransactionTimeout(oldTimeout);
}
}