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

Sun*_*nny 4 caching java-ee

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

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

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

ska*_*man 5

假设您有一个webapp,最简单的方法是使用a 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?
   }
}
Run Code Online (Sandbox Code Playgroud)

然后在你的web.xml中:

<listener>
   <listener-class>com.x.MyListener</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢.完美地工作! (2认同)