Following Yoav's earlier comments I've implemented a basic class "SessionLogger" that implements HttpSessionListener, HttpSessionActivationListener, HttpSessionAttributeListener, ServletContextListener. It just writes amessages to stdout using System.out.println() to log when each event fires, including each of the interface events plus instantiation and finalization of SessionLogger itself. I've configured it in web.xml:
<listener> <listener-class>core.servlet.SessionLogger</listener-class> </listener> SessionLogger logs its own presence OK when I instantiate it, and happily logs events as expected on sessions, and session attributes. It logs context creation but not destruction. Here's some sample catalina.log lines for starting TC, logging in, logging out, logging in again: 2004-11-05 00:56:50 StandardContext[/ao]*** SERVLET CONTEXT: initialized 2004-11-05 00:58:08 StandardContext[/ao]*** SESSION EVENT: sessionCreated, [EMAIL PROTECTED] 2004-11-05 00:58:23 StandardContext[/ao]*** SESSION ATTRIBUTE EVENT: attributeAdded, LOGGED_IN_USER, [ID=1] 2004-11-05 00:58:30 StandardContext[/ao]*** SESSION ATTRIBUTE EVENT: attributeRemoved, LOGGED_IN_USER, [ID=1] 2004-11-05 00:58:30 StandardContext[/ao]*** SESSION EVENT: sessionDestroyed, [EMAIL PROTECTED] 2004-11-05 00:58:30 StandardContext[/ao]*** SESSION EVENT: sessionCreated, [EMAIL PROTECTED] 2004-11-05 00:58:34 StandardContext[/ao]*** SESSION ATTRIBUTE EVENT: attributeAdded, LOGGED_IN_USER, [ID=1] However if I then stop TC, I get nothing logged at all after the "attributeAdded" event. The log just shows this as the last line: 05-Nov-2004 00:03:57 org.apache.coyote.http11.Http11Protocol pause INFO: Pausing Coyote HTTP/1.1 on http-80 and there are no loglines to indicate that the SessionLogger#sessionDestroyed, SessionLogger#contextDestroyed or SessionLogger#finalize methods were called. So it looks like sessions are working, but something is not working when TC stops, and I suspect that this is why my sessions don't persist over restarts. I've read the docs and how-tos that I can find, plus googled forum stuff on the web. Does anyone have any insights please? PS the above applies whether or not I explicitly add a Manager to my context config. Note that the standard config files for 5.0.28 do not explictly include a <Manager>, but the docs say that "A Manager element MAY be nested inside a Context component. If it is not included, a default Manager configuration will be created automatically". I tried adding a Manager to my context as follows just in case following Yoav's earlier comments: <Manager className="org.apache.catalina.session.StandardManager" distributable="false" debug="4" pathname="SESSIONS.ser" /> but this made no difference to the behaviour described above. Another weird thing: if I trigger a webapp reload by rebuilding my warfile while TC is running, TC complains about the absence of SESSIONS.ser - it appears to be trying to persist sessions to the file - which it does not try to do when I stop TC. The log message is: 05-Nov-2004 00:23:26 org.apache.catalina.session.StandardManager doUnload SEVERE: IOException while saving persisted sessions: java.io.FileNotFoundException: C:\jakarta-tomcat-5.0.28\work\Catalina\localhost\ao\SESSIONS.ser (The system cannot find the path specified) The file does not exist so the message sort of makes sense, except that this does not happen if I stop and then start TC again - only if a reload is triggered when I rebuild my warfile. > -----Original Message----- > From: Shapira, Yoav [mailto:[EMAIL PROTECTED] > Sent: Thursday 04 November 2004 16:09 > To: Tomcat Users List > Subject: RE: sessionS info persistence when restart Tomcat > > > > Hi, > > >I had always thought all sessions were lost when the server restarts. > In > >fact I just tried it and confirmed that (5.0.28). Are we > maybe talking > >about 2 different things? > > I think we're talking about the same thing. Sessions are > supposed to be > persisted by default. > > >I have nonstandard config (a very sparse server.xml, no explicit > Manager > > You need a Manager. When I said "by default" I mean out of the box, > i.e. with the default server.xml, which has such a Manager IIRC. > > >Is this the manager config ref you were talking about? > >http://jakarta.apache.org/tomcat/tomcat-5.0-doc/config/manager.html > > Yeah. > > >I just read through it. If I've understood correctly, because my > Manager > >is > >not explicitly configured, > > There's a difference between not explicitly configured and > not declared > at all. > > One way to test this is with an > HttpSessionListener/HttpSessionActivationListener (one listener can > implement both interfaces and thereby capture all four > relevant events). > It's trivial to write one that just prints out information > when sessions > are created, destroyed, passivated, and activated. > > Yoav > > > > 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] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]