JBOSS AS 7.1.1.Final关闭泄漏连接?
我已经在standalone.xml中完成了以下设置:
因此,我也会收到“为您关闭连接”这样的消息:
INFO [org.jboss.jca.core.api.connectionmanager.ccm.CachedConnectionManager] (http--0.0.0.0-8080-160) IJ000100: Closing a connection for you. Please close them yourself: org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6@5cdb81dc: java.lang.Throwable: STACKTRACE at org.jboss.jca.core.connectionmanager.ccm.CachedConnectionManagerImpl.registerConnection(CachedConnectionManagerImpl.java:265) at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:495) at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:129)
尽管如此,有时我的游泳池已经筋疲力尽 它按照定义超出200的连接。 为什么?
30 200
没有办法,我的应用程序需要这么多连接。 肯定有连接泄漏。 如果是这样的话,为什么当我按照上述说法启用设置时,jboss没有自己关闭它:
怎么解决?
谢谢。
JBoss无法关闭所有泄露的连接。
您需要在启用JCA日志记录后通过检查日志来查找泄漏的连接。 我通过这种方式解决了连接泄漏。
您将在日志中获得如下条目
DEBUG [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (MSC service thread 1-4) {JNDI_NAME}: getConnection(null, null) [1/100] -->
表示从池中获取连接。
DEBUG [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (MSC service thread 1-4) {JNDI_NAME}: returnConnection(607e334, false) [1/99]
– > 表示返回池连接
您可以检查哪个查询没有将连接返回到池,并检查您的应用程序从哪个查询执行。 修理它。
更多关于Neeraj答案的信息。
DEBUG [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (MSC service thread 1-4) {JNDI_NAME}: getConnection(null, null) [1/100]
最后的[1/100]是[活动连接/可用连接],其中:
active connections = createdCount - destroyedCount available connections = maxPoolSize - inUseCount