如何在独立应用程序中关闭Ehcache CacheManager

时间:2014-06-08 19:37:31

标签: java spring ehcache

我有一个客户在独立应用程序中使用的简单API。在幕后我的API使用Ehcache来提高性能。

一切正常,但我的客户端需要在我的API中调用shutdown()方法来调用CacheManager.shutdown(),否则即使主线程已完成,Ehcache也会继续在后台运行。

有没有办法可以避免对我的客户进行额外的shutdown()调用?

我尝试使用@PreDestroy Spring注释来调用此调用,但它不起作用?

这里我要添加一个示例客户端程序。

public class ClientApp{
    @Autowired
    private IClientService service;

    public static void main(String[] args){
        try{
            service.getClients();
            ...
        } finally {
            service.shutdown(); // to shutdown the cache background thread
        }
    }
}

在ClientServiceImpl.java中,我有以下几行

public void shutdown(){
    LOGGER.info("Shutting the cache down...");
    ehcacheManager.shutdown();
}

2 个答案:

答案 0 :(得分:1)

您的示例确认了独立应用程序设置。 当主线程终止时,Ehcache不应阻止JVM关闭。

如果是,您需要为此问题添加线程转储,以便我们进一步分析问题及其原因。

答案 1 :(得分:1)

添加以下行可以满足我的需求。

System.setProperty(CacheManager.ENABLE_SHUTDOWN_HOOK_PROPERTY, "true");