Overview of Java Web Technologies, Part 1 - Listening to Application Events (
Page 8 of 9 )
The Servlet 2.3 and 2.4 specifications allow you to write listener classes
for servlet contexts, session objects, and request objects (only in Servlet
2.4). In this section, we’re interested in the listener classes for a servlet
context.
The javax.servlet package
provides two listener interfaces that support event notifications for state
changes in the ServletContext
object: the ServletContext
Listener interface and the ServletContextAttributesListener
interface. We’ll examine the ServletContextListener interface here,
because it’s directly
related to writing JSF applications.
You use the ServletContextListener
interface to listen to the ServletContext lifecycle events. ServletContextListener provides two
methods:
- The contextInitialized method
is called when the Web application is ready to service requests. The method is
called automatically by the servlet container when its own initialization
process is finished. You can write code that needs to be executed when the
application initializes, such as loading a JDBC driver, creating a database Connection object, or assigning
initialization values to global variables.
- The contextDestroyed method
is invoked when the servlet context is about to be shut down. You can use this
method to write code that needs to run when the application shuts down, such as
closing a database connection or writing to the log.
The signatures of contextInitialized and contextDestroyed are as follows:
public void
contextInitialized(ServletContextEvent sce)
public void
contextDestroyed(ServletContextEvent sce)
As an example, the code in Listing 4 is a listener class
called ApplicationListener. It
listens to the lifecycle events of the ServletContext. It simply prints the
string “Application initialized” when the ServletContext is initialized and
“Application destroyed” when the ServletContext is destroyed.
Listing 4 The ApplicationListener Class
import
javax.servlet.ServletContextListener;
import
javax.servlet.ServletContextEvent;
public class ApplicationListener
implements ServletContextListener {
public void
contextInitialized(ServletContextEvent cse) {
System.out.println("Application initialized");
}
public void
contextDestroyed(ServletContextEvent cse) {
System.out.println("Application shut down");
}
}
For the ApplicationListener
class to work, you must register it in the deployment descriptor, such as the
one in Listing 5.
Listing 5 The Deployment Descriptor for the
ApplicationListener Class
<?xml version="1.0"
encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems,
Inc.//DTD Web Application
2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<listener>
<listener-class>ApplicationListener</listener-class>
</listener>
</web-app>
Now, every time your application starts (the first time a servlet or JSP page
is invoked), you will see the string “Application initialized” at the console.
And before your application is taken out of service, it will display
“Application shut down.”
Remember: This is
part one of the first chapter of JavaServer Faces Programming, by Budi
Kurniawan (McGraw-Hill/Osborne, ISBN 0-07-222983). Stay tuned for part 2 of
"Overviews of Java Web Technologies," where we learn about JSP, JavaBeans, and
Model 2. Buy
this book! |