diff -ru src1/com/arjuna/ats/internal/jdbc/ConnectionManager.java src2/com/arjuna/ats/internal/jdbc/ConnectionManager.java --- src1/com/arjuna/ats/internal/jdbc/ConnectionManager.java 2006-11-03 11:46:48.000000000 +0100 +++ src2/com/arjuna/ats/internal/jdbc/ConnectionManager.java 2009-04-16 09:32:54.000000000 +0200 @@ -62,54 +62,60 @@ String user = info.getProperty(TransactionalDriver.userName); String passwd = info.getProperty(TransactionalDriver.password); String dynamic = info.getProperty(TransactionalDriver.dynamicClass); + boolean poolConnections = !"false".equalsIgnoreCase(info.getProperty(TransactionalDriver.poolConnectionsWithinTransaction)); + Enumeration e = _connections.elements(); ConnectionImple conn = null; - if (dynamic == null) - dynamic = ""; - - while (e.hasMoreElements()) + if(poolConnections) { - conn = (ConnectionImple) e.nextElement(); - - ConnectionControl connControl = conn.connectionControl(); - TransactionManager tm = com.arjuna.ats.jta.TransactionManager.transactionManager(); - Transaction tx1, tx2 = null; - - tx1 = connControl.transaction(); - try - { - tx2 = tm.getTransaction(); - } - catch (javax.transaction.SystemException se) - { - /* Ignore: tx2 is null already */ - } - - /* Check transaction and database connection. */ - if ((tx1 != null && tx1.equals(tx2)) - && connControl.url().equals(dbUrl) - && connControl.user().equals(user) - && connControl.password().equals(passwd) - && connControl.dynamicClass().equals(dynamic)) - { - try - { - /* - * Should not overload the meaning of closed. Change! - */ - - if (!conn.isClosed()) - { - return conn; - } - } - catch (Exception ex) - { - ex.printStackTrace(); - throw new SQLException(ex.getMessage()); - } - } + + if (dynamic == null) + dynamic = ""; + + while (e.hasMoreElements()) + { + conn = (ConnectionImple) e.nextElement(); + + ConnectionControl connControl = conn.connectionControl(); + TransactionManager tm = com.arjuna.ats.jta.TransactionManager.transactionManager(); + Transaction tx1, tx2 = null; + + tx1 = connControl.transaction(); + try + { + tx2 = tm.getTransaction(); + } + catch (javax.transaction.SystemException se) + { + /* Ignore: tx2 is null already */ + } + + /* Check transaction and database connection. */ + if ((tx1 != null && tx1.equals(tx2)) + && connControl.url().equals(dbUrl) + && connControl.user().equals(user) + && connControl.password().equals(passwd) + && connControl.dynamicClass().equals(dynamic)) + { + try + { + /* + * Should not overload the meaning of closed. Change! + */ + + if (!conn.isClosed()) + { + return conn; + } + } + catch (Exception ex) + { + ex.printStackTrace(); + throw new SQLException(ex.getMessage()); + } + } + } } conn = null; diff -ru src1/com/arjuna/ats/jdbc/TransactionalDriver.java src2/com/arjuna/ats/jdbc/TransactionalDriver.java --- src1/com/arjuna/ats/jdbc/TransactionalDriver.java 2006-11-03 11:46:48.000000000 +0100 +++ src2/com/arjuna/ats/jdbc/TransactionalDriver.java 2009-04-16 09:25:38.000000000 +0200 @@ -65,6 +65,7 @@ public static final String userName = "user"; public static final String password = "password"; public static final String dynamicClass = "DYNAMIC_CLASS"; +public static final String poolConnectionsWithinTransaction = "POOL_CONNECTIONS_WITHIN_TRANSACTION"; public static final String createDb = "CREATE_DB"; public TransactionalDriver ()