我通过对我的数据源使用以下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服务器。
我该怎么做?
答案 0 :(得分:1)
试试这个 -
MethodNameBasedMBeanInfoAssembler
public class MethodNameBasedMBeanInfoAssembler
AbstractReflectiveMBeanInfoAssembler
允许的子类 指定要作为MBean操作和属性公开的方法名称。 JavaBean getter和setter将自动公开为JMX 属性。您可以通过
managedMethods
提供一系列方法名称 属性。如果你有多个bean,并希望每个bean都使用a 不同的方法名称集,然后你可以映射bean键(即 用于将bean传递给MBeanExporter
)到方法列表的名称 使用methodMappings
属性的名称。如果您为
methodMappings
和managedMethods
指定值, 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