Application lifecycle listeners and events
Application lifecycle listeners and events, now part of the Servlet API, enable you to notify interested listeners when servlet contexts and sessions change. For example, you can notify users when attributes change and if sessions or servlet contexts are created or destroyed.
The lifecycle listeners give the application developer greater control over interactions with ServletContext and HttpSession objects. Servlet context listeners manage resources at an application level. Session listeners manage resources associated with a series of requests from a single client. Listeners are available for lifecycle events and for attribute modification events. The listener developer creates a class that implements the javax listener interface, corresponding to the desired listener functionality.
At application startup time, the container uses introspection to create an instance of your listener class and registers it with the appropriate event generator.
When a servlet context is created, the contextInitialized method of your listener class is invoked, which creates the database connection for the servlets in your application to use, if this context is for your application.
When the servlet context is destroyed, your contextDestroyed method is invoked, which releases the database connection, if this context is for your application.
Listener classes for servlet context and session changes
The Servlet API provides these interfaces and classes:
- Interface javax.servlet.ServletContextListener
- Interface javax.servlet.ServletContextAttributeListener
- Interface javax.servlet.FilterChain
- Class javax.servlet.ServletContextEvent
- Class javax.servlet.ServletContectAttributeEvent
- Interface javax.servlet.http.HttpSessionListener
- Interface javax.servlet.http.HttpSessionAttributeListener
- Interface javax.servlet.http.HttpSessionActivationListener
- Class javax.servlet.http.HttpSessionEvent
The following methods are defined as part of the javax.servlet.ServletContextListener interface:
void contextInitialized(ServletContextEvent)
This method provides notification that the Web application is ready to process requests. Place code in this method to see if the created context is for your Web application, and if it is, allocate a database connection and store the connection in the servlet context.void contextDestroyed(ServletContextEvent)
This method provides notification that the servlet context is about to shut down. Place code in this method to see if the created context is for your Web application, and if it is, close the database connection stored in the servlet context.
Example: com.ibm.websphere.DBConnectionListener.java
The following example shows how to create a servlet context listener:
package com.ibm.websphere; import java.io.*; import javax.servlet.*; public class DBConnectionListener implements ServletContextListener { // implement the required context init method void contextInitialized(ServletContextEvent sce) { ... } // implement the required context destroy method void contextDestroyed(ServletContextEvent sce) { ... } }