I am using tomcat 5.0.19 and am experiencing different behavior from a servlet context listener than what is outlined in the servlet spec. My expectation is that the listener methods contextInitialized() and contextDestroyed() should be called respectively each time the application is undeployed and redeployed.
However, in practice it appears the methods are only called once per tomcat session. I have a class that implements Servlet context listener and the methods contextInitialized() and contextDestroyed() are only called once and not on subsequent undeploys and redeploys. However, restarting tomcat causes the methods to be called again, but only for a single deployment of the application. Those methods are not called again unless tomcat is restarted (I have also tried the reload task, start and stop all with no success). That is, if the application is deployed and tomcat is restarted, the method contextInitialized() is called, and if the app is undelpoyed the method contextDestroyed() is also correctly called. On any subsequent deployments or undeployments the servlet context listener methods are not called. Restarting tomcat always results in the methods being called again on the first deployment or undeployment after the restart. First, is the witnessed behavior the way context listeners are supposed behave? If not, do you have any suggestions on where I might look to correct the problem. For completeness, I am including my listener tag from web.xml file and the source of the class that implements ServletContextListener. In my web.xml file I have registered the listener as follows: <listener> <listener class> scs.reaction.common.init.ReactionInitialization </listener-class> </listener> And here is my implementation: package scs.reaction.common.init; import java.io.IOException; import java.util.logging.*; import javax.servlet.*; public class ReactionInitialization implements ServletContextListener { Logger logger = null; public ReactionInitialization(){} public void contextInitialized(ServletContextEvent arg0){ // Check to see if the root log manager for this application exists if // not initialize it and set its default atributes if(LogManager.getLogManager().getLogger("scs.reaction")== null) { //Call the supers initialization first // we will name all loggers after thier fully qaulified class name logger = Logger.getLogger("scs.reaction"); FileHandler fileHandler = null; //creare our own file handler // the file handler will cycle through 2 files // files are limited in size to 100KB and sessions are appended try { fileHandler = new FileHandler(System.getProperty("catalina.home")+ "/logs/" + "scs.reaction.log",1000000,2,true); } catch (SecurityException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // use a standard text formatter for the file output fileHandler.setFormatter(new SimpleFormatter()); //attach the handler logger.addHandler(fileHandler); //Set the level to all messages logger.setLevel(Level.FINEST); logger.finer("Context Intitalized"); } } public void contextDestroyed(ServletContextEvent arg0) { logger.finer("Context Destroyed"); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]