tags:

views:

24

answers:

1

Hey Guys,

I am writing a J2EE 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?

A: 

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>
skaffman
Thanks a lot. Works Perfectly!
Sunny