最近在产品中发现了一个错误,和分布式事务相关,仔细梳理了一下,还发现不少值得深究的东西,下面就分享给大家。
错误堆栈信息比较长,只摘出关键的一段:
[2/28/12 0:57:28:195 MST] 00000016 SystemErr R Caused by: javax.resource.ResourceException: enlist: caught Exception [2/28/12 0:57:28:195 MST] 00000016 SystemErr R at com.ibm.ejs.j2c.LocalTransactionWrapper.enlist(LocalTransactionWrapper.java:696) [2/28/12 0:57:28:195 MST] 00000016 SystemErr R at com.ibm.ejs.j2c.ConnectionManager.lazyEnlist(ConnectionManager.java:2186) [2/28/12 0:57:28:195 MST] 00000016 SystemErr R at com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.lazyEnlist(WSRdbManagedConnectionImpl.java:2569) [2/28/12 0:57:28:195 MST] 00000016 SystemErr R at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.beginTransactionIfNecessary(WSJdbcConnection.java:714) [2/28/12 0:57:28:195 MST] 00000016 SystemErr R ... 127 more [2/28/12 0:57:28:195 MST] 00000016 SystemErr R Caused by: com.ibm.ws.Transaction.IllegalResourceIn2PCTransactionException: Illegal attempt to enlist multiple 1PC XAResources [2/28/12 0:57:28:195 MST] 00000016 SystemErr R at com.ibm.ws.tx.jta.RegisteredResources.enlistResource(RegisteredResources.java:864) [2/28/12 0:57:28:195 MST] 00000016 SystemErr R at com.ibm.ws.tx.jta.TransactionImpl.enlistResource(TransactionImpl.java:1781) [2/28/12 0:57:28:195 MST] 00