Hi, A couple of quick notes as I have to run to a meeting: - I think your understanding of the spec is correct - What happens if you reload the app (not undeploy and redeploy, but reload) via the manager webapp? - Are you sure the undeploy is COMPLETELY done cleanly, and no threads from your own webapp are left behind? For example, do you have to shutdown your log manager?
Yoav Shapira Millennium Research Informatics >-----Original Message----- >From: Jason Bucholtz [mailto:[EMAIL PROTECTED] >Sent: Monday, April 05, 2004 3:04 PM >To: Tomcat Users List >Subject: Servlet Context Listener problem > >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] This e-mail, including any attachments, is a confidential business communication, and may contain information that is confidential, proprietary and/or privileged. This e-mail is intended only for the individual(s) to whom it is addressed, and may not be saved, copied, printed, disclosed or used by anyone else. If you are not the(an) intended recipient, please immediately delete this e-mail from your computer system and notify the sender. Thank you. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]