Java EE 6 SDK 

Samples Main Page

The Servlet 3.0 ServletContainerInitializer Sample Application

This sample application demonstrates how the ServletContainerInitializer feature can be used by libraries to register interest in certain types of applications and take whatever action as the library sees fit.

Description

This sample application has a (dummy) library with a class, web.servlet.servletcontainerinitializer_lib.SharedLibrary, that implements javax.servlet.ServletContainerInitializer. This class declares interest in any web application that has a class that uses the @javax.servlet.annotation.WebServlet annotation. This class registers such interest by using the @javax.servlet.annotation.HandlesTypes annotation. The action performed by this (dummy) library is to set an attibute SHAREDLIB-1 in the ServletContext whenever an application, in which at least one class uses @WebServlet annotation, is getting deployed.

The main web application in this sample has a class that uses @WebServlet annotation and this class checks if the attribute SHAREDLIB-1 is indeed set in the ServletContext for this application.

When started, this sample, stops GlassFish server (if it is already running), creates the (dummy) library and places this library JAR file in the $GLASSFISH_HOME/lib directory before restarting GlassFish server. During server start, the web container scans the libraries and registers the ServletContainerInitializer implementations and their respective interest. When the sample application (which uses @WebServlet) is deployed, the web container recognizes that the ServletContainerInitializer implementation in the (dummy) library will be interested in this application. Hence the web container will call the onStartUp method which will set SHAREDLIB-1 attribute in the ServletContext of the application which is read and printed by the sample application on the browser.

Building, Deploying, and Running the Application

Perform the following steps to build, deploy, and run the application:

  1. Set up your build environment and configure the application server with which the build system has to work by following the common build instructions.
  2. app_dir is the sample application base directory: samples_install_dir/javaee6/web/servlet/servletcontainerinitializer-war.
  3. Change directory to app_dir.
  4. Build, deploy and run the sample application using the all target
  5. app_dir> ant all

    You can replace the ant all command with the following set of commands:

    app_dir> ant default compiles and packages the application

    app_dir> ant deploy deploys it to application server

    app_dir> ant run runs the test

  6. Note: You can run the test in one of the following ways:
  7. Use the target undeploy to undeploy the application.

    app_dir> ant undeploy

  8. Use the target clean to remove the temporary directories like build and dist.

    app_dir> ant clean

Building, Deploying, and Running the Application in NetBeans IDE

Perform the following steps to build, deploy, and run the application using NetBeans IDE:

  1. Refer to the common build instructions for setting up NetBeans IDE and Java EE 6 SDK.
  2. In the NetBeans IDE, choose File → Open Project (Ctrl-Shift-O), navigate to the samples_install_dir/javaee6/web/servlet/ directory, select servletcontainerinitializer-war, select Open Required Projects, and click Open Project.
  3. In the Projects tab, right click servletcontainerinitializer-war and select Run to build, deploy, and run the project.

Troubleshooting

If you have problems when running the application, refer the troubleshooting document.

 

Copyright © 1997-2010 Oracle and/or its affiliates. All rights reserved.