2011-11-21 23 views
6

JRE 1.6を使用してTomcat 6にデプロイされたWebアプリケーションで、EhCache 1.4.0、Spring 3.0.5を使用しています。JMX監視用のnet.sf.ehcache.CacheManagerの名前を設定する方法は?

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

<util:property-path id="hibernateCacheProvider" path="sessionFactory.settings.cacheProvider" /> 

<bean id="hibernateEhCacheManager" class="com.mycompany.spring.beans.factory.config.UnaccessibleFieldRetrievingFactoryBean"> 
    <property name="targetObject" ref="hibernateCacheProvider" /> 
    <property name="targetField" value="manager" /> 
    <property name="makeInstanceFieldVisible" value="true" /> 
</bean> 

<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
    <description>The cacheManager configuration.</description> 
    <property name="targetClass" value="net.sf.ehcache.management.ManagementService" /> 
    <property name="staticMethod" value="net.sf.ehcache.management.ManagementService.registerMBeans" /> 
    <property name="arguments"> 
     <list> 
      <ref bean="hibernateEhCacheManager" /> 
      <ref bean="mbeanServer" /> 
      <value type="boolean">true</value> 
      <value type="boolean">true</value> 
      <value type="boolean">true</value> 
      <value type="boolean">true</value> 
     </list> 
    </property> 
</bean> 

<bean class="org.springframework.jmx.export.annotation.AnnotationMBeanExporter"> 
    <property name="server" ref="mbeanServer" /> 
    <property name="beans"> 
     <map> 
      <entry key="Hibernate:type=statistics,application=applicationOne"> 
       <bean class="org.hibernate.jmx.StatisticsService"> 
        <property name="statisticsEnabled" value="true" /> 
        <property name="sessionFactory" ref="sessionFactory" /> 
       </bean> 
      </entry> 
     </map> 
    </property> 
</bean> 

<bean id="hbm.properties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> 
    <property name="properties"> 
     <props> 
      <prop key="hibernate.show_sql">false</prop> 
      <prop key="hibernate.generate_statistics">false</prop> 
      <prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop> 
      <prop key="hibernate.cache.use_query_cache">true</prop> 
      <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop> 
      <prop key="hibernate.cache.provider_configuration_file_resource_path">applicationOne-web/ehcache.xml</prop> 
      <prop key="hibernate.cache.query_cache_factory">org.hibernate.cache.StandardQueryCacheFactory</prop> 
     </props> 
    </property> 
</bean> 

私はこのように、jmxtermツールを使用して、L2キャッシュ内のすべてのエントリをクリアすることを可能にする必要があります:私はこのように、JMX経由してL2キャッシュ管理を暴露しています

run --bean net.sf.ehcache:type=CacheManager,[email protected] clearAll 

私は文脈から正確なCacheManagerを決定するためにjconsoleを認識していますが、私はそれには参加しないいくつかの理由でそれを使用しないかもしれません。

これまでのところ、JVM(Tomcatサーバー)に2つのアプリケーションがデプロイされており、両方ともEhCacheのJMX監視が可能であるとします。これら二つのMBeanの名前は次のようになります。クリアするにはどのキャッシュを決定しようとしたときに、彼らは非常に有用ではない見ることができるように

net.sf.ehcache:type=CacheManager,[email protected] 
net.sf.ehcache:type=CacheManager,[email protected] 

質問:L2キャッシュのすべてのエントリをクリアするためにどのキャッシュを使用するのかを正確に特定するために、各CacheManagerの名前を設定する可能性はありますか?

ありがとうございます。

答えて

2

hibernateEhCacheManagerが利用可能になると、次のBean定義を使用して、そのメソッドをインクルードする(インクルードを設定する)ことができます。通常これは、CacheManagerの名前を変更するトリックを行う必要があります。

<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
     <property name="targetObject"> 
      <ref local="hibernateEhCacheManager"/> 
     </property> 
     <property name="targetMethod"> 
      <value>setName</value> 
     </property> 
     <property name="arguments" value="<the_desired_name>"/> 
</bean> 
13

私は、これはずっと前に答え​​たけど、私はそれだけであなたのehcacheを設定ファイル(applicationOne-ウェブ/ ehcache.xml)でそれを設定する方が簡単だと思います。

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="ehcache.xsd" updateCheck="false" 
    monitoring="autodetect" dynamicConfig="true" name="MY_CACHE_MANAGER_NAME"> 

... 
</ehcache> 
関連する問題