Wie legen Sie den Namen des Netzes.sf.ehcache.CacheManager für die JMX-überwachung?

Ich bin mit EhCache 1.4.0, Spring 3.0.5, in einer web-Anwendung bereitgestellt, die auf Tomcat 6 verwenden JRE 1.6. Ich bin aussetzt, die über die JMX-die L2-cache-Verwaltung, wie diese:

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

Habe ich, um zu ermöglichen, deaktivieren Sie alle Einträge in den L2-cache mit den jmxterm - tool, wie diesem:

run --bean net.sf.ehcache:type=CacheManager,name=net.sf.ehcache.CacheManager@605df3c5 clearAll

Ich bin mir bewusst, jconsole zu bestimmen, die genaue CacheManager aus dem Kontext, aber ich kann nicht es verwenden, für einige Gründe, warum ich nicht ein.

So weit, So gut, nehme aber an, dass meine JVM (Tomcat-server) hat 2 Anwendungen bereitgestellt, die sowohl ermöglicht die JMX-überwachung für EhCache. Die Namen dieser zwei MBeans werden:

net.sf.ehcache:type=CacheManager,name=net.sf.ehcache.CacheManager@605df3c5
net.sf.ehcache:type=CacheManager,name=net.sf.ehcache.CacheManager@49ff3459

Wie Sie sehen können, Sie sind nicht sehr nützlich, wenn Sie versuchen zu bestimmen, welche cache zu löschen.

Also meine Frage ist: gibt es irgendeine Möglichkeit, die Namen der einzelnen Cache-Manager, um genau zu erkennen, welche Sie verwenden möchten, deaktivieren Sie alle Einträge in den L2-cache ?

Danke.

Schreibe einen Kommentar