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);
}