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