2011-11-21 13 views
6

मैं जेआरई 1.6 का उपयोग कर टोमकैट 6 पर तैनात वेब एप्लिकेशन में एएचसीएच 1.4.0, स्प्रिंग 3.0.5 का उपयोग कर रहा हूं। मैं JMX के माध्यम से उजागर कर रहा हूँ L2 कैश प्रबंधन, इस तरह:जेएमएक्स निगरानी के लिए net.sf.ehcache.CacheManager का नाम कैसे सेट करें?

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

मैं:

<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 कैश में सभी प्रविष्टियों स्पष्ट करने के लिए अनुमति देने के लिए है संदर्भ से CacheManager सटीक CacheManager निर्धारित करने के लिए jconsole से अवगत है, लेकिन मैं इसका उपयोग कुछ कारणों से नहीं कर सकता हूं, जिसमें मैं शामिल नहीं होगा।

अब तक तो अच्छा है, लेकिन लगता है कि मेरी JVM (बिलाव सर्वर) तैनात 2 आवेदन, ehcache के लिए दोनों की इजाजत दी JMX निगरानी है। इन दो MBeans के नाम हो जाएगा:

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

आप वे काफी उपयोगी नहीं हैं देखने के लिए जब यह निर्धारित करने के कैश को साफ़ करने की कोशिश कर सकते हैं।

तो मेरे सवाल है: क्या आदेश जो एक L2 कैश में सभी प्रविष्टियों स्पष्ट करने के लिए उपयोग करने के लिए वास्तव में पहचान करने के लिए, प्रत्येक CacheManager के नाम सेट करने के लिए किसी भी संभावना है?

धन्यवाद।

उत्तर

2

एक बार hibernateEhCacheManager उपलब्ध एक अपनी विधियां प्रारंभ कर सकते हैं (सहित स्थापित करने) के बाद सेम परिभाषा का उपयोग। आम तौर पर इसे कैशमेनगर नाम बदलने वाली चाल करना चाहिए।

<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> 
संबंधित मुद्दे