在启动时初始化Java EE应用程序缓存

时间:2010-06-16 18:05:45

标签: caching java-ee

我正在编写一个Java EE应用程序,它通过读取文件来计算很多东西。这个过程需要花费很多时间,我希望每次部署应用程序时都会自动缓存它。

所以,我正在考虑制作一个静态类,并将我的缓存结果存储在某种静态的hashmap中。

但是有关如何自动部署和初始化缓存的任何想法?我是否必须手动访问该应用程序并初始化缓存,还是有更好的出路?

1 个答案:

答案 0 :(得分:5)

假设您有一个webapp,最简单的方法是使用ServletContextListener在启动时初始化应用程序。

http://java.sun.com/javaee/6/docs/api/javax/servlet/ServletContextListener.html

public class MyListener implements ServletContextListener {

   public void contextInitialized(ServletContextEvent sce) {
      // initialize cache here
   }

   public void contextDestroyed(ServletContextEvent sce) {
      // shut down logic?
   }
}

然后在你的web.xml中:

<listener>
   <listener-class>com.x.MyListener</listener-class>
</listener>