- trx connection management enhancement
This commit is contained in:
Heng Sin Low 2009-12-07 09:33:29 +00:00
parent 4f57115ea3
commit 64021ec448
1 changed files with 26 additions and 3 deletions

View File

@ -138,15 +138,37 @@ public class Trx implements VetoableChangeListener
private long m_startTime; private long m_startTime;
/** /**
* Get Connection * Get connection
* @return connection * @return connection
*/ */
public Connection getConnection() public Connection getConnection()
{
return getConnection(true);
}
/**
* Get Connection
* @param createNew if true, create new connection if the trx does not have one created yet
* @return connection
*/
public Connection getConnection(boolean createNew)
{ {
log.log(Level.ALL, "Active=" + isActive() + ", Connection=" + m_connection); log.log(Level.ALL, "Active=" + isActive() + ", Connection=" + m_connection);
if (m_connection == null) // get new Connection if (m_connection == null) // get new Connection
setConnection(DB.createConnection(false, Connection.TRANSACTION_READ_COMMITTED)); {
if (createNew)
{
if (s_cache == null || !s_cache.containsKey(m_trxName))
{
new Exception("Illegal to getConnection for Trx that is not register.").printStackTrace();
return null;
}
setConnection(DB.createConnection(false, Connection.TRANSACTION_READ_COMMITTED));
}
else
return null;
}
if (!isActive()) if (!isActive())
start(); start();
return m_connection; return m_connection;
@ -444,6 +466,7 @@ public class Trx implements VetoableChangeListener
throws PropertyVetoException throws PropertyVetoException
{ {
log.info(evt.toString()); log.info(evt.toString());
throw new PropertyVetoException("Skip reset for trx entries cache", evt);
} // vetoableChange } // vetoableChange
/** /**