Java EE 7 SDK |
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.
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.
This sample application demonstrates how to use the servlet container initializer.
Perform the following steps to build, deploy, and run the
sample application:
app_dir
is the sample application base
directory: samples_install_dir/servlet/servlet-container-initializer
.
Change directory to app_dir.
mvn
target: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/
servlet-container-initializer-lib.jar
to <glassfish4_dir>/glassfish/lib
.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
http://<javaee.server.name>:<javaee.server.port>/servlet-container-initializer-war
app_dir>
asadmin undeploy <app_name>
clean
to remove the temporary directories
like /target.
app_dir> mvn
clean
Perform the following steps to build, deploy, and run the application using NetBeans IDE:
samples_install_dir/servlet/
directory, select servlet-container-initializer-war
, select Open Required Projects, and click Open Project.servlet-container-initializer-war
and select Run to build, deploy, and run the project.Note: You may have to copy the servlet-container-initializer-lib.jar to $GLASSFISH_HOME/lib and restart the server before running the application
If you have problems when running the application, refer the troubleshooting document.
Copyright © 1997-2010 Oracle and/or its affiliates. All rights reserved.