需求:需要用EJB3实现定时,定时中需要调用一些数据库truncate操作
现状:EJB3定时在Websphere 中需要使用XA事务,需要使用XA的数据源,而Truncate 操作必须使用普通的数据源,在XA事务调用普通数据源时:[13-8-9 23:25:38:492 CST] 000000c1 WSRdbManagedC W   DSRA0180W: 在执行 ManagedConnection.destroy() 期间检测到异常。异常:com.ibm.ws.exception.WsException: DSRA0080E: An exception was received by the Data Store Adapter. See original exception message: 关闭的连接. with SQL State : 99999 SQL Code : 17008-----------------------------------------------------------------------------------------------------------
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:173)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:229)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:403)
at oracle.jdbc.driver.PhysicalConnection.rollback(PhysicalConnection.java:3369)
at oracle.jdbc.OracleConnectionWrapper.rollback(OracleConnectionWrapper.java:135)
at com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.cleanupTransactions(WSRdbManagedConnectionImpl.java:4588)
at com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.destroy(WSRdbManagedConnectionImpl.java:3746)
at com.ibm.ejs.j2c.MCWrapper.destroy(MCWrapper.java:2074)
at com.ibm.ejs.j2c.FreePool.cleanupAndDestroyMCWrapper(FreePool.java:756)
at com.ibm.ejs.j2c.FreePool.returnToFreePool(FreePool.java:508)
at com.ibm.ejs.j2c.PoolManager.release(PoolManager.java:2410)
at com.ibm.ejs.j2c.MCWrapper.releaseToPoolManager(MCWrapper.java:2595)
at com.ibm.ejs.j2c.LocalTransactionWrapper.afterCompletion(LocalTransactionWrapper.java:1255)
at com.ibm.tx.jta.impl.RegisteredSyncs.coreDistributeAfter(RegisteredSyncs.java:359)
at com.ibm.ws.tx.jta.RegisteredSyncs.distributeAfter(RegisteredSyncs.java:319)
at com.ibm.tx.jta.impl.EmbeddableTransactionImpl.distributeAfter(EmbeddableTransactionImpl.java:193)
at com.ibm.tx.jta.impl.TransactionImpl.postCompletion(TransactionImpl.java)
at com.ibm.tx.jta.impl.TransactionImpl.internalRollback(TransactionImpl.java:2005)
at com.ibm.tx.jta.impl.TransactionImpl.internalRollback(TransactionImpl.java:1944)
at com.ibm.tx.jta.impl.TransactionImpl.rollback(TransactionImpl.java:1346)
at com.ibm.ws.tx.jta.TransactionImpl.rollback(TransactionImpl.java:3568)
at com.ibm.ws.tx.jta.TranManagerImpl.rollback(TranManagerImpl.java:478)
at com.ibm.tx.jta.impl.TranManagerSet.rollback(TranManagerSet.java:206)
at com.ibm.ejs.csi.TranStrategy.rollback(TranStrategy.java:1180)
at com.ibm.ejs.csi.TranStrategy.handleException(TranStrategy.java:315)
at com.ibm.ejs.csi.TransactionControlImpl.postInvoke(TransactionControlImpl.java:581)
at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java:4873)
at cn.cncc.pisa.collection.service.transfer.EJSLocalNSLExportDataService_8ffe7a46.export(EJSLocalNSLExportDataService_8ffe7a46.java)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at cn.cncc.pisa.collection.service.colldata.ProcessDataMgr.execute(ProcessDataMgr.java:150)
at cn.cncc.pisa.collection.service.colldata.ProcessDataMgr.processData(ProcessDataMgr.java:88)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at com.ibm.ejs.container.AsyncMethodWorkWrapper.run(AsyncMethodWorkWrapper.java:225)
at com.ibm.ws.asynchbeans.J2EEContext.run(J2EEContext.java:809)
at com.ibm.ws.asynchbeans.WorkWithExecutionContextImpl.go(WorkWithExecutionContextImpl.java:222)
at com.ibm.ws.asynchbeans.ABWorkItemImpl.run(ABWorkItemImpl.java:206)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1691)
Caused by: java.sql.SQLException: 关闭的连接 DSRA0010E: SQL 状态:99999,错误码:17,008。
... 45 more
EJB3 定时 普通数据源