菜鸟请教——websphere中用ibatis事务控制的问题

小弟在web应用程序中使用quartz框架进行job开发,在tomcat上运行没有问题,在was6.0上运行发现如下异常:
[8/12/09 19:59:00:044 GMT+08:00] 0000008c MCWrapper     E   J2CA0081E: Method cleanup failed while trying to execute method cleanup on ManagedConnection [email=WSRdbManagedConnectionImpl@67616761]WSRdbManagedConnectionImpl@67616761[/email] from resource jdbc/scmuat. Caught exception: com.ibm.ws.exception.WsException: DSRA0080E: An exception was received by the Data Store Adapter. See original exception message: Cannot call 'cleanup' on a ManagedConnection while it is still in a transaction..
at com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException.(DataStoreAdapterException.java:241)
at com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException.(DataStoreAdapterException.java:190)
at com.ibm.ws.rsadapter.AdapterUtil.createDataStoreAdapterException(AdapterUtil.java:388)
at com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.cleanupTransactions(WSRdbManagedConnectionImpl.java:3733)
at com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.cleanup(WSRdbManagedConnectionImpl.java:3329)
at com.ibm.ejs.j2c.MCWrapper.cleanup(MCWrapper.java:1449)
at com.ibm.ejs.j2c.FreePool.returnToFreePool(FreePool.java:487)
at com.ibm.ejs.j2c.PoolManager.release(PoolManager.java:1780)
at com.ibm.ejs.j2c.MCWrapper.releaseToPoolManager(MCWrapper.java:2281)
at com.ibm.ejs.j2c.ConnectionEventListener.connectionClosed(ConnectionEventListener.java:324)
at com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.processConnectionClosedEvent(WSRdbManagedConnectionImpl.java:1588)
at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.closeWrapper(WSJdbcConnection.java:816)
at com.ibm.ws.rsadapter.jdbc.WSJdbcObject.close(WSJdbcObject.java:185)
at com.ibm.ws.rsadapter.jdbc.WSJdbcObject.close(WSJdbcObject.java:144)
at com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransaction.close(JdbcTransaction.java:81)
at com.ibatis.sqlmap.engine.transaction.TransactionManager.end(TransactionManager.java:111)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.endTransaction(SqlMapExecutorDelegate.java:782)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.endTransaction(SqlMapSessionImpl.java:176)
at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.endTransaction(SqlMapClientImpl.java:154)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.autoEndTransaction(SqlMapExecutorDelegate.java:883)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:622)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:589)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:118)
at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapClientImpl.java:95)
at com.zmcc.ermsuite.platform.unieap.dao.EAPDAOCommand.sm_searchList(EAPDAOCommand.java:784)
at com.zmcc.ermsuite.platform.unieap.dao.EAPDAOCommand.sm_searchList(EAPDAOCommand.java:797)
at com.zmcc.ermsuite.srm.ic.boss.common.sl.sltradehead.dao.SltradeheadDAO.doSearchTransferYwListByCondition(SltradeheadDAO.java:24)
at com.zmcc.ermsuite.srm.ic.mis.storage.job.TransferFl.execute(TransferFl.java:42)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)

看上去像是事务控制问题,我是用的ibatis的事物控制。在运行各个功能模块进行数据的增删改查的时候没有这个问题,一切正常,就是job运行的时候会出现这个问题。
但是异常虽然抛出来了,发现job中执行的增删改查照样还是能够完成的。。。。。。

不知道有没有大虾遇到过这个问题
事物控制都是用的同样的机制,就是ibatis的:sqlmap.startTransaction();和sqlmap.commitTransaction();为何在功能模块执行数据的增删改查和在job中会不一样?
刚开始使用was,望大家能给予指点,谢谢
参与4

3同行回答

flyyun106flyyun106软件开发工程师猜吧
我现在也遇到这样的问题了,朋友你是怎么解决的显示全部

我现在也遇到这样的问题了,朋友你是怎么解决的

收起
软件开发 · 2016-11-01
浏览916
jason_yenjason_yentesttest
很专业的东西,谢谢分享!显示全部
很专业的东西,谢谢分享!收起
2009-09-10
浏览932
afornsoafornsosenior managerIBM
在输出的日志上看见这样的一段:[8/12/09 22:20:56:984 GMT+08:00] 0000003d LocalTranCoor W   WLTC0033W: Resource jdbc/scmuat rolled back in cleanup of LocalTransactionContainment.[8/12/09 22:20:56:996 GMT+08:00] 0000003d LocalTranCoor W  &n...显示全部
在输出的日志上看见这样的一段:
[8/12/09 22:20:56:984 GMT+08:00] 0000003d LocalTranCoor W   WLTC0033W: Resource jdbc/scmuat rolled back in cleanup of LocalTransactionContainment.
[8/12/09 22:20:56:996 GMT+08:00] 0000003d LocalTranCoor W   WLTC0032W: One or more local transaction resources were rolled back during the cleanup of a LocalTransactionContainment.
不知道这个是不是was自己提供的事务控制机制?难道和ibatis的冲突了?收起
2009-08-12
浏览1001

提问者

afornso
senior managerIBM

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2009-08-12
  • 关注会员:1 人
  • 问题浏览:6356
  • 最近回答:2016-11-01
  • X社区推广