2012-06-06 18 views
5

Aunque supongo que es muy poco probable, pero ¿hay alguna manera de borrar el ehcache sin reiniciar el servidor? Necesito borrar el caché para realizar algunas pruebas: no puedo cambiar el código y no puedo permitirme reiniciar el servidor varias veces.Cómo borrar el ehcache sin reinicio del servidor

PD: Estoy usando apache-tomcat-5.5.25 Háganme saber. Gracias, psvm

+0

esto es una pregunta del servidor, entonces, serverfault.com le conviene. – Raptor

+0

¿Por qué no puedes reiniciar el servidor? Esto parece que está probando hardware en vivo o en un conjunto muy restringido de plataformas, lo que rompe el aislamiento de su prueba y podría invalidar su prueba. A menos que su despliegue sea enormemente bizantino, le sugiero que tenga plataformas aisladas, Tomcat no es exactamente una fuente de recursos lista para usar. –

Respuesta

5

¿Expone Ehcache a través de JMX? Luego, puede borrar el caché usando operaciones JMX usando una herramienta como, por ejemplo, jvisualvm. Busque MBeans como net.sf.ehcache.CacheManager que proporcionan una operación clearAll().

+0

Tengo curiosidad si JMX expone una forma de borrar un caché específico y no todo, lo cual se logra mediante clearAll() –

0

utilizando Spring + Hibernate y mbean exponiendo:

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"); 
     } 
    } 

} 

XML de configuración:

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

Y luego conectar con el proceso de Java utilizando jconsole y utilizar el método Mbean invocación - para borrar la caché de segundo nivel !

Cuestiones relacionadas