JBoss Community

Currently Being Moderated

CanJBossTellMeWhenIDontCloseAConnection

VERSION 36

Created on: May 20, 2004 6:22 PM by Adrian Brock - Last Modified:  Apr 7, 2008 10:15 PM by Louis

Can JBossAS tell me when I don't close connections, statements or resultsets?

 

Yes.

 

Connections

 

 

For connections the configuration is in deploy/transaction-service.xml


    <attribute name="Debug">true</attribute>

 

Starting with 4.0.0, the configuration is in deploy/jbossjca-service.xml


   <!-- 
     | The CachedConnectionManager is used partly to relay started UserTransactions to 
     | open connections so they may be enrolled in the new tx.
   -->
  <mbean code="org.jboss.resource.connectionmanager.CachedConnectionManager" 
         name="jboss.jca:service=CachedConnectionManager">
    <depends optional-attribute-name="TransactionManagerServiceName">jboss:service=TransactionManager</depends>

    <!-- Enable connection close debug monitoring -->
    <attribute name="Debug">true</attribute>

  </mbean>

 

 

Note!! To have this applied to connections openned by Servlets or JSP's see below {FOOTNOTE DEF 1 1}.

 

 

 

Statements and ResultSets

 

For statements (and from 3.2.4 ResultSets) you can add the following to your -ds.xml


  <track-statements>true</track-statements>

 

 

Closing statements and ResultSets is important if you want to use prepared statement caching

and/or don't won't to leak cursors in your database.

 

 

 

Servlets and JSP {FOOTNOTE RED #1 1}

 

 

From from 3.2.4 this checking is available in the web layer.

 

 

Enable the CachedConnectionValve by uncommenting the following in deploy/jbossweb-xxx.sar/server.xml:


         <!-- Check for unclosed connections -->
        <Valve className="org.jboss.web.tomcat.tc5.jca.CachedConnectionValve"
            cachedConnectionManagerObjectName="jboss.jca:service=CachedConnectionManager" ></Valve>

 

NOTE: From 4.0.0 the CachedConnectionValve should be configured this way:


        <Valve className="org.jboss.web.tomcat.tc5.jca.CachedConnectionValve"
            cachedConnectionManagerObjectName="jboss.jca:service=CachedConnectionManager"
            transactionManagerObjectName="jboss:service=TransactionManager" ></Valve>

 

JBoss 4.0.0 distribution still had the previous configuration that woulld cause a NullPointerException

in CachedConnectionValve.checkTransactionComplete(CachedConnectionValve.java:198).

 

Once the valve is enabled, the CachedConnectionManager must be registered in deploy/jbossweb-xxx.sar/META-INF/jboss-service.xml.

At the end of the file, uncomment:


       <depends>jboss.jca:service=CachedConnectionManager</depends>

 

 

 

 

 

Production and Stress Testing

 

 

In production you will want to turn these off. You should have found all your leaks during development.

 

Related

 

WhatDoesTheMessageDoYourOwnHousekeepingMean?

 

Average User Rating
(0 ratings)




There are no comments on this article

More Like This

  • Retrieving data ...