Java EE 7 SDK 

Samples Main Page

The Servlet Container Initializer Sample Application

This sample application demonstrates how the servlet container initializer 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, Initializer, that implements ServletContainerInitializer. This class declares interest in any web application that has a class that uses the @WebServlet annotation. This class registers such interest by using the @HandlesTypes annotation. The action performed by this (dummy) library is to set an attibute SHAREDLIB-1 in the ServletContext whenever an application is deployed in which at least one class uses @WebServlet annotation.

The main web application in this sample has a class that uses the @WebServlet annotation. 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 calls the onStartUp method which sets the SHAREDLIB-1 attribute in the ServletContext of the application. The application reads and prints the attribute on the browser.

Key Features

This sample application demonstrates how to use the servlet container initializer.

Building, Deploying, and Running the Application

Perform the following steps to build, deploy, and run the sample 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/servlet/servlet-container-initializer.
  3. Change directory to app_dir.
  4. Build the sample application using the mvn target:
  5. Use the command below to compile the initializer library and build the main web application war file:

    app_dir> mvn install

    The initializer library is under app_dir/servlet-container-initializer-lib/target/. The main web application war file is under app_dir/servlet-container-initializer-war/target/

  6. Copy servlet-container-initializer-lib.jar to <glassfish4_dir>/glassfish/lib.
  7. Deploy the application:
  8. Go to: app_dir/servlet-container-initializer-war/target to find the war file. Deploy the war file by using the command below: (you may have to start the server before deploying)

    servlet-container-initializer-war/> asadmin deploy ./target/servlet-container-initializer-war.war

    Note: You have to restart the server before running the application

  9. Test the application as follows:

  10. Use the glassfish command line to undeploy the application.

    app_dir> asadmin undeploy <app_name>

  11. Use the target clean to remove the temporary directories like /target.

    app_dir> mvn 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 7 SDK.
  2. In the NetBeans IDE, choose File → Open Project (Ctrl-Shift-O), navigate to the samples_install_dir/servlet/ directory, select servlet-container-initializer-war, select Open Required Projects, and click Open Project.
  3. In the Projects tab, right click servlet-container-initializer-war and select Run to build, deploy, and run the project.
  4. Note: You may have to copy the servlet-container-initializer-lib.jar to $GLASSFISH_HOME/lib and restart the server before running the application

Troubleshooting

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

 

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