6

可能性は非常に低いと思いますが、サーバーを再起動せずにehcacheをクリアする方法はありますか?一部のテストのためにキャッシュをクリアする必要があります-コードを変更できず、サーバーを複数回再起動する余裕がありません。

PS:私はapache-tomcat-5.5.25を使用しています。教えてください。ありがとう、psvm

4

2 に答える 2

8

JMXを介してEhcacheを公開していますか?次に、jvisualvmなどのツールを使用して、JMX操作を使用してキャッシュをクリアできます。net.sf.ehcache.CacheManager操作を提供するようなMBeanを探しますclearAll()

于 2012-06-12T20:29:30.503 に答える
0

spring + hibernateを使用して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");
        }
    }

}

XML構成:

<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を使用してJavaプロセスに接続し、Mbeanメソッドの呼び出しを使用して、第2レベルのキャッシュをクリアします。

于 2016-11-24T07:20:27.470 に答える