What is the expected behaviour when calling dataSouce.getConnection() for 
managed transactions in iBATIS 3?

I find suspicious that ResultLoader calls dataSouce.getConnection() at line 89 
which could create an unexpected connection. And since managed transaction is 
used, the connection may never be closed.


Christian


Here is the code from ResultLoader which calls dataSouce.getConnection() :

private Executor newExecutor() throws SQLException {

Environment environment = configuration.getEnvironment();

if (environment == null)

throw new ExecutorException("ResultLoader could not load lazily. Environment 
was not configured.");

TransactionFactory txFactory = environment.getTransactionFactory();

if (txFactory == null)

throw new ExecutorException("ResultLoader could not load lazily. Transaction 
Factory was not configured.");

DataSource ds = environment.getDataSource();

if (ds == null) throw new ExecutorException("ResultLoader could not load 
lazily. DataSource was not configured.");

Connection conn = ds.getConnection();

conn = wrapConnection(conn);

Transaction tx = txFactory.newTransaction(conn, false);

return configuration.newExecutor(tx, ExecutorType.SIMPLE);

}

Reply via email to