iBATIS is trying to avoid extra commits when they are not needed, but that doesn't play well with WebSphere. This is a "feature" of WebSphere. See here:
Other transaction managers are a little looser in their implementations.
In other words - that's just the way it is.
Jeff Butler
On 7/7/06, Cornel Antohi <[EMAIL PROTECTED]> wrote:
if (connection .getAutoCommit()) { connection.setAutoCommit(false );Hi,I have found in com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransaction class, init method, the following lines of code:// AutoCommit}I do not understand why should it be set to "false" by default, even I am running simple SELECT statements !Using Websphere as application server, I am receiving the following warning messages after each database call:[7/7/06 13:40:41:111 EEST] 00000026 LocalTranCoor W WLTC0032W: One or more local transaction resources were rolled back during the cleanup of a LocalTransactionContainment.and sometimes errors like Websphere cannot cleanup the connection because it seems to be in a transaction !!!One solution found on Internet is to setup in sql-map-config:<transactionManager type="JDBC" commitRequired="true" >and iBatis will perform a commit() at the end (see SqlMapConfigParser and TransactionManager classes):txManager.setForceCommit("true".equals(attributes.getProperty( "commitRequired")));...if(session.isCommitRequired() || forceCommit ) {trans.commit();session.setCommitRequired(false);}My question is: why should I use "commitRequired=true" even if I am executing a simple SELECT statement ? I feel that this "commitRequired=true" is a workaround to a problem generated by wrong initialization of the JdbcTransaction!Thank you,Cornel
