I studied about HttpSessionActivation Listener and in order understand it fully I created a simple program . I studied that the listener will be invoked whenever session attribute is migrated from one JVM to another .
The following was what I did to understand HttpSessionActivationListener
Created two instances of Tomcat in a single box.(Actually two services)
Configured Apache Http Server to point the two instances (Load balancing and fail over)
Created a small web application and deployed in two servers
Whenever I stop once instance I'm getting a message "Session Will Passivated "(which is what I have in overridden sessionWillPassivate method)
but I'm not getting "Session Did Activated" message (overridden in sessionDidActivated method) .
Please clarify me why I'm not getting Activated method message .
did you try this ?
mark web apps as distributable.
SCJP 1.6, SCWCD 1.5
Joined: Apr 15, 2008
Thanks for your reply.First of all sorry for the delayed response from my side. I tried as you said(Implementing Serializable interface in HttpSessionActivationListener class) and I'm getting "SessionDidActivated" message but not when I expected.
Here's the Scenario when I'm getting SessionDidActivated
When I stop Tomcat instance (say for example currently "Tomcat Instance 1" is serving the request) after hitting "SessionExample" Servlet (mapped as "/sessiontest.do") as I said I'm getting "SessionWillPassivate " message . When I start the same Tomcat instance again I'm getting "SessionDidActivated" message.
What I Thought
After stopped the Tomcat instance I reloaded the same page expecting this time it will served by another Tomcat instance(say "Tomcat Instance 2" and I will get "SessionDidActivated" message since the session will be migrated.
As I expected the page is served by another Tomcat instance but the session is not migrated and I'm not getting "SessionDidActivated" in the new Tomcat instance.
I also created a new Servlet named as (Servlet3) and modified SessionExample.java so that It contains button and when it clicked it will hit a new Servlet(Servlet 3) to test this instead of reloading the same page but it also doesn't help.