Миграция Jonas в Wildfly: проблема connection.commit()
Я еще не закончил миграцию с Jonas на Wildfly, но когда я тестирую в среде UAT, я обнаруживаю некоторую утечку соединения, такую как:
javax.resource.ResourceException: IJ000453: Unable to get managed
connection for java:
java.sql.SQLException: javax.resource.ResourceException: IJ000453: Unable
to get managed connection for java:/jdbc/xxxxx/xxxxDs
at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:154)
at zz.pp.xx.pp.hh.kk.j.getConnection(Unknown Source)
Caused by: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:/jdbc/xxxxx/xxxxDs
at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:442)
at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection(TxConnectionManagerImpl.java:421)
at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:515)
at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:146)
... 55 more
Caused by: javax.resource.ResourceException: IJ000655: No managed connections available within configured blocking timeout (30000 [ms])
at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.getConnection(SemaphoreArrayListManagedConnectionPool.java:511)
at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getSimpleConnection(AbstractPool.java:461)
at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getConnection(AbstractPool.java:433)
at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:379)
... 58
Когда сервер работал на Jonas, утечка соединения отсутствует. Затем я решаю проверить каждое соединение, которое мы используем в проекте: это только стандартный JDBC в попытке с блоками ресурсов, за исключением "Транзакций", которые используют connection.setAutocommit(false).
Например:
try {
connection= DaoConnection.getDeclicConnection();
st = connection.createStatement();
rs = st.executeQuery(request);
boolean autoComit = connection.getAutoCommit();
connection.setAutoCommit(false);
//Treatment
connection.commit();
connection.setAutoCommit(autoComit);
} catch (Exception e) {
logger.error(e);
} finally {
//close All;
}
Может кто-нибудь объяснить мне, почему Wildfly не совместим с connection.setAutocommit(false)?