2

使用java/Spring/Ibatis sqlserverはデータベースであり、datasource以下org.apache.commons.dbcp.BasicDataSourceはデータソースオブジェクトです。現在使用中の数とアイドル状態の数など、リアルタイムの接続プール数を公開しjmx、実装方法の簡単なアイデアを使用して監視したい

<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>
4

2 に答える 2

5

受け入れられた答えは、これを行う方法を実際には教えてくれません。Springを使用する場合、考えられる解決策は、を使用して、公開する必要MethodNameBasedMBeanInfoAssemblerのあるメソッドをリストすることです。BasicDataSourceidで構成されたBeanがあると仮定して、これをSpringXMLdataSource構成に追加します。

<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>
</beans>
于 2013-01-17T10:13:56.500 に答える
0

はい、できます。jdbcTemplate が注入され、dao メソッドによって使用されている dao クラスに対して jmx を有効にし、次のメソッドの値を返す create public getter メソッドを使用するだけで、jmx が監視できます。

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() 
于 2012-10-16T15:02:54.227 に答える