Welcome to my Tomcat tutorials website!

mercoledì 14 gennaio 2009

Tomcat context listener example

When a web application is deployed a servlet context object, ServletContext, is created and associated with the web application. There is a one-to-one relationship between a servlet context object and the web application. All resources within the web application, such as servlets and JSPs, can retrieve any information stored in the servlet context.
');

As a web application programmer, you may want to initialize objects and place them in the servlet context when it is created and destroy the objects when the servlet context is destroyed.

For example, you may decide to create a connection to a database when the servlet context is created and close the connection when the servlet context is destroyed.

To write an application lifecycle event listener that executes when the servlet context is created and destroyed, write a Java class that implements the javax.Servlet.ServletContextListener class.

This class has two methods with the following signatures (taken from the JavaDocs):

  • void contextDestroyed (ServletContextEvent sce) Notification that the Servlet context is about to be shut down.
  • void contextInitialized (ServletContextEvent sce) Notification that the Web Application is ready to process requests

The Servlet 2.3 specification allows for more interaction between the web application programmer and ServletContext. The programmer can now write an application lifecycle event listener that executes when the attributes of the ServletContext object have been modified.

If you want to execute some code when the attributes of the ServletContext object has been modified, write a Java class that implements the javax.Servlet.ServletContextAttributesListener interface. This interface defines three methods with the following signatures (this is taken from the JavaDocs):
');

  • void attributeAdded (ServletContextAttributeEvent scab) Notification that a new attribute was added to the servlet context.
  • void attributeRemoved (ServletContextAttributeEvent scab) Notification that an existing attribute has been removed from the servlet context.
  • void attributeReplaced (ServletContextAttributeEvent scab) Notification that an attribute on the servlet context has been replaced.

Here's a sample class which implements both ServletContextListener and ServletContextAttributesListener :


import javax.servlet.ServletContext;
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;


public class ServletContextAttribListener
implements ServletContextAttributeListener,ServletContextListener {

private ServletContext context = null;

//This method is invoked when an attribute
//is added to the ServletContext object
public void attributeAdded (ServletContextAttributeEvent scab)
{
System.out.println("An attribute was added to the " +
"ServletContext object");
}

//This method is invoked when an attribute
//is removed from the ServletContext object
public void attributeRemoved (ServletContextAttributeEvent scab)
{
System.out.println("An attribute was removed from " +
"the ServletContext object");
}

//This method is invoked when an attribute
//is replaced in the ServletContext object
public void attributeReplaced (ServletContextAttributeEvent scab)
{
System.out.println("An attribute was replaced in the " +
"ServletContext object");
}


public void contextDestroyed(ServletContextEvent event)
{

//Output a simple message to the server's console
System.out.println("The Simple Web App. Has Been Removed");
this.context = null;

}


//This method is invoked when the Web Application
//is ready to service requests

public void contextInitialized(ServletContextEvent event)
{
this.context = event.getServletContext();

//Output a simple message to the server's console
System.out.println("The Simple Web App. Is Ready");

}

}

Nessun commento:

Posta un commento