Showing posts with label HttpSessionActivationListener. Show all posts
Showing posts with label HttpSessionActivationListener. Show all posts

Saturday, 14 June 2014

Servlets : HttpSessionActivationListener

Master Core Java & Servlets!

Subscribe to Ram N Java for beginner-friendly coding walkthroughs, session management tutorials, and hands-on Java guides!

🔔 Subscribe to Ram N Java

What is HttpSessionActivationListener?

In distributed Java web applications and clustered server environments, web sessions often need to be moved across different Java Virtual Machines (JVMs) or temporarily written to persistent storage to free up system memory. The HttpSessionActivationListener interface is designed to notify objects bound to a session during these lifecycle events.

These operations are known as Session Passivation (serializing and storing a session to disk or transferring it across cluster nodes) and Session Activation (deserializing and restoring the session back into active memory).

Core Lifecycle Methods

The HttpSessionActivationListener interface defines two callback methods implemented directly on session attribute objects:

  • sessionWillPassivate(HttpSessionEvent se): Notifies the object that the session is about to be passivated (serialized/swapped out). This provides an opportunity to release non-serializable references such as open database connections, sockets, or file handles.
  • sessionDidActivate(HttpSessionEvent se): Notifies the object that the session has just been activated (deserialized/restored into memory). This allows the object to re-establish required runtime resources and connections.
public class UserState implements Serializable, HttpSessionActivationListener {
    private static final long serialVersionUID = 1L;
    private String username;
    private transient Connection dbConn;

    @Override
    public void sessionWillPassivate(HttpSessionEvent se) {
        System.out.println("Session is passivating. Closing transient resources...");
        // Safely clean up non-serializable fields
    }

    @Override
    public void sessionDidActivate(HttpSessionEvent se) {
        System.out.println("Session activated. Re-establishing connection...");
        // Re-initialize transient connections if needed
    }
}

Why is HttpSessionActivationListener Important?

  • Clustering & High Availability: Enables seamless failover and load balancing by preparing session data for migration across cluster nodes.
  • Preventing Serialization Failures: Avoids NotSerializableException issues by ensuring non-serializable fields are detached before passivation.
  • No web.xml Declaration: Like HttpSessionBindingListener, it is implemented on the session attribute object itself, requiring no deployment descriptor setup.

Recommended Related Tutorials

Continue exploring servlet listeners and session handling with these tutorials from Ram N Java:


Click here to watch in Youtube : https://www.youtube.com/watch?v=RjI_PCa6qFs

Click the below Image to Enlarge
HttSessionActivationListener
HttSessionActivationListener
HttSessionActivationListener
HttSessionActivationListener
HttSessionActivationListener
HttSessionActivationListener
See also:

  • Servlets Tutorial
  • All Design Patterns Links
  • Tutorials