如何通过JMX公开Oracle连接池统计信息?

时间:2014-01-22 21:40:48

标签: java spring oracle jdbc jmx

我通过对我的数据源使用以下Spring配置来使用Oracle连接池:

  <bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource">
    <property name="connectionCachingEnabled" value="true" />
    <property name="URL" value="myUrl" />
    <property name="user" value="myUserName" />
    <property name="password" value="myPassword" />
    <property name="connectionCacheProperties">
        <util:properties>
            <prop key="InitialLimit">5</prop>
            <prop key="MinLimit">5</prop>
            <prop key="MaxLimit">30</prop>
            <prop key="MaxStatementsLimit">20</prop>
        </util:properties>
    </property>
</bean>

我想通过JMX公开这个池的统计信息,以便我可以监视池以查看池中有多少连接,有多少连接,等等。

我使用oracle 11.2.0.3.0 jdbc驱动程序连接到Oracle 10g服务器。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

试试这个 -

MethodNameBasedMBeanInfoAssembler

public class MethodNameBasedMBeanInfoAssembler
     

AbstractReflectiveMBeanInfoAssembler允许的子类   指定要作为MBean操作和属性公开的方法名称。   JavaBean getter和setter将自动公开为JMX   属性。

     

您可以通过managedMethods提供一系列方法名称   属性。如果你有多个bean,并希望每个bean都使用a   不同的方法名称集,然后你可以映射bean键(即   用于将bean传递给MBeanExporter)到方法列表的名称   使用methodMappings属性的名称。

     

如果您为methodMappingsmanagedMethods指定值,   Spring将首先尝试在映射中查找方法名称。如果不   找到bean的方法名称,它将使用方法名称   由managedMethods定义。

例如 -

...
<bean id="mbeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean">
    <property name="locateExistingServerIfPossible" value="true" />
</bean>

<bean id="mbeanExporter" class="org.springframework.jmx.export.MBeanExporter">
   <property name="assembler">
      <bean class="org.springframework.jmx.export.assembler.MethodNameBasedMBeanInfoAssembler">         
         <property name="managedMethods">
         <list>
            <value>getNumActive</value>
            <value>getMaxActive</value>
            <value>getNumIdle</value>
            <value>getMaxIdle</value>
            <value>getMaxWait</value>
            <value>getInitialSize</value>
         </list>
         </property>         
      </bean>
    </property>

    <property name="beans">
       <map>                   
          <entry key="dataSource:name=DataSource" value-ref="dataSource"/>    
       </map>
    </property>

    <property name="server" ref="mbeanServer" />

</bean>

答案 1 :(得分:0)

在Hibernate,EhCache,Quartz,DBCP和Spring中启用JMX 请参考http://nurkiewicz.blogspot.com/2011/12/enabling-jmx-in-hibernate-ehcache-qurtz.html