2012-06-06 12 views
5

हालांकि मुझे लगता है कि इसकी अत्यधिक संभावना नहीं है - लेकिन क्या सर्वर को पुनरारंभ किए बिना ehcache को साफ़ करने का कोई तरीका है? मुझे कुछ परीक्षण के लिए कैश साफ़ करने की आवश्यकता है - मैं कोड नहीं बदल सकता और कई बार सर्वर को पुनरारंभ करने का जोखिम नहीं उठा सकता।सर्वर के बिना ehcache को साफ़ करने के लिए कैसे करें

पीएस: मैं अपाचे-टोमकैट-5.5.25 का उपयोग कर रहा हूं कृपया मुझे बताएं। धन्यवाद, psvm

+0

यह एक सर्वर प्रश्न है, इसलिए, serverfault.com आपको उपयुक्त बनाता है। – Raptor

+0

आप सर्वर को पुनरारंभ क्यों नहीं कर सकते? ऐसा लगता है कि आप लाइव हार्डवेयर पर या रिग के बहुत सीमित सेट पर परीक्षण कर रहे हैं, जो आपके परीक्षण अलगाव को तोड़ता है और आपके परीक्षण को अमान्य कर सकता है। जब तक आपकी तैनाती बहुत अधिक बीजान्टिन नहीं होती है, तो मैं अलग-अलग रिग रखने का सुझाव दूंगा, तो टॉमकैट बिल्कुल बॉक्स के बाहर संसाधन संसाधन नहीं है। –

उत्तर

5

क्या आप जेएमएक्स के माध्यम से एहचेचे का पर्दाफाश करते हैं? फिर आप एक उपकरण का उपयोग कर जेएमएक्स संचालन का उपयोग कर कैश को साफ़ कर सकते हैं उदा। jvisualvm। net.sf.ehcache.CacheManager जैसे एमबीएन की तलाश करें जो clearAll() ऑपरेशन प्रदान करते हैं।

+0

मुझे उत्सुकता है कि जेएमएक्स एक विशिष्ट कैश को साफ़ करने का एक तरीका खोलता है और सभी नहीं, जो clearAll द्वारा प्राप्त किया जाता है() –

0

का उपयोग करते हुए वसंत + हाइबरनेट और उजागर MBean:

import org.hibernate.Cache; 
import org.hibernate.SessionFactory; 
import org.slf4j.LoggerFactory; 
import org.springframework.stereotype.Component; 

import javax.annotation.Resource; 

@Component("CacheManagerMBean") 
public class CacheManagerMBean { 

    private static final org.slf4j.Logger logger = LoggerFactory.getLogger(CacheManagerMBean.class); 

    @Resource(name = "sessionFactory") 
    private SessionFactory sessionFactory; 

    public void clearCache() { 
     Cache cache = sessionFactory.getCache(); 
     if (null != cache) { 
      logger.info("Clearing cache..."); 
      cache.evictAll(); 
      cache.evictAllRegions(); 
      logger.info("Clearing cache...Done!"); 
     } else { 
      logger.error("No second level cache available for session-factory"); 
     } 
    } 

} 

एक्सएमएल कॉन्फ़िग:

<bean id="jmxExporterCacheManagerMBean" class="org.springframework.jmx.export.MBeanExporter"> 
     <property name="beans"> 
      <map> 
       <entry key="CacheManager:type=SecondLevelCacheManager"> 
        <ref bean="CacheManagerMBean"/> 
       </entry> 
      </map> 
     </property> 
    </bean> 

और फिर JConsole का उपयोग कर जावा प्रक्रिया से कनेक्ट और प्रयोग MBean विधि मंगलाचरण - दूसरे स्तर कैश को साफ़ करने के लिए !