变得陈旧:尝试连接数据库时出现关闭连接错误。
[5/13/21 8:24:30:442 CDT] 00000583 ThreadMonitor W WSVR0606W: Thread "ORB.thread.pool : 0" (00000583) was previously reported to be hung but has completed. It was active for approximately 900827 milliseconds. There is/are 0 thread(s) in total in the server that still may be hung.
[5/13/21 8:24:30:441 CDT] 0000ad9b WSJdbcConnect W DSRA8650W: Error closing a JDBC child wrapper, com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement@51fcce3e
com.ibm.websphere.ce.cm.StaleConnectionException: Closed Connection
at sun.reflect.GeneratedConstructorAccessor42150.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:57)
at java.lang.reflect.Constructor.newInstance(Constructor.java:437)
at com.ibm.websphere.rsadapter.GenericDataStoreHelper.mapExceptionHelper(GenericDataStoreHelper.java:630)
at com.ibm.websphere.rsadapter.GenericDataStoreHelper.mapException(GenericDataStoreHelper.java:689)
at com.ibm.ws.rsadapter.AdapterUtil.mapException(AdapterUtil.java:2289)
at com.ibm.ws.rsadapter.jdbc.WSJdbcUtil.mapException(WSJdbcUtil.java:1219)
at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.closeWrapper(WSJdbcPreparedStatement.java:565)
at com.ibm.ws.rsadapter.jdbc.WSJdbcObject.close(WSJdbcObject.java:242)
at com.ibm.ws.rsadapter.jdbc.WSJdbcObject.close(WSJdbcObject.java:195)
at com.ibm.ws.rsadapter.jdbc.WSJdbcObject.closeChildWrappers(WSJdbcObject.java:297)
at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.dissociate(WSJdbcConnection.java:1951)
at com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.dissociateConnections(WSRdbManagedConnectionImpl.java:1255)
at com.ibm.ejs.j2c.MCWrapper.cleanup(MCWrapper.java:1870)
at com.ibm.ejs.j2c.PoolManager.release(PoolManager.java:2975)
at com.ibm.ejs.j2c.MCWrapper.releaseToPoolManager(MCWrapper.java:2684)
at com.ibm.ejs.j2c.MCWrapper.abortMC(MCWrapper.java:4086)
at com.ibm.ejs.j2c.AbortableXATransactionWrapper.abort(AbortableXATransactionWrapper.java:58)
at com.ibm.tx.jta.impl.RegisteredResources.abort(RegisteredResources.java:3268)
at com.ibm.tx.jta.impl.TransactionImpl.abortTransactionParticipants(TransactionImpl.java:3308)
at com.ibm.ws.tx.jta.TransactionImpl.timeoutTransaction(TransactionImpl.java:1301)
at com.ibm.ws.tx.jta.TimeoutManager$TimeoutInfo.alarm(TimeoutManager.java:225)
at com.ibm.ws.tx.util.alarm.AlarmManagerImpl$AlarmListenerAdapter.alarm(AlarmManagerImpl.java:48)
at com.ibm.ejs.util.am._Alarm.runImpl(_Alarm.java:151)
at com.ibm.ejs.util.am._Alarm.run(_Alarm.java:136)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1909)
在WebSphere日志中出现陈旧/关闭连接错误的可能原因是什么?
发布于 2021-05-14 03:47:44
堆栈显示它正在处理事务超时,其中包括中止参与的连接。请注意,紧跟其前的警告消息(WSVR0606W)显示,本应挂起的操作在15分钟(900秒)后终于完成。这可能不是巧合。可能中止处理允许该操作继续进行,如果两个线程同时继续关闭连接,您可以看到类似这样的错误,因为另一个线程设法先关闭连接,而这是另一个线程所不希望的。JDBC连接没有很好地设计为可以在多个线程上访问,但是Connection.abort使之成为可能。需要关注的更大问题是,为什么要运行一个操作--可能是事务性操作--需要15分钟或更长时间。我会先专注于解决这个问题。但是,如果确实需要15+分钟事务,则需要增加事务超时,以避免超时和中止事务。
https://stackoverflow.com/questions/67525066
复制相似问题