Search code examples
connection-poolingspring-jdbcspring-jmx

Spring datasource connection manager with jmx to expose real time connections count


Using java/Spring/Ibatis sqlserver is the database and datasource is org.apache.commons.dbcp.BasicDataSource following is the data source object i want to expose real time connection pool count like how many are right now in use and how many in idle and i want to monitor using jmx any quick idea how to implement

<bean id="wssModelDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="net.sourceforge.jtds.jdbcx.JtdsDataSource"/>
    <property name="url" value="com.wss.jdbc.ConnectionUrl=jdbc:jtds:sqlserver://x-x2/x_control_QA;appName=wss;sendStringParametersAsUnicode=false;loginTimeout=20;socketTimeout=180"/>
    <property name="username" value="xxx"/>
    <property name="password" value="xxx"/>
    <property name="maxActive" value="10"/>
    <property name="maxWait" value="10000"/>
  </bean>

Solution

  • Yes we can do it, simply enable jmx for your dao class which have jdbcTemplate injected and being used by dao methods and use create public getter methods returning value of following methods and here you go jmx can monitor for you.

    http://commons.apache.org/dbcp/apidocs/org/apache/commons/dbcp/BasicDataSource.html

    getMinIdle() 
              Returns the minimum number of idle connections in the pool.
     int    getNumActive() 
              [Read Only] The current number of active connections that have been allocated from this data source.
     int    getNumIdle()