Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Initialize Java EE Application Cache on Startup

I am writing a Java EE application which calculates a lot of things by reading from files. This process takes a lot of time and I want it to be cached automatically everytime the application is deployed.

So, I was thinking of making a static class and storing my cache results in a static hashmap of some sort.

But any ideas on how to automate deployment and initialize that cache? Do I have to manually visit that application and initialize the cache or is there a better way out?

like image 438
Sunny Avatar asked Jun 16 '10 18:06

Sunny


1 Answers

Assuming you have a webapp, the easiest thing to do is use a ServletContextListener to initialize the app on startup.

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

And then in your web.xml:

<listener>
   <listener-class>com.x.MyListener</listener-class>
</listener>
like image 115
skaffman Avatar answered Sep 29 '22 03:09

skaffman