Java EE 6 SDK

Samples Main Page

# The Servlet 3.0 Dynamic Registration of Servlets, Filters, and Listeners Sample Application

This sample application demonstrates the dynamic registration facilities for Servlets, Filters, and Listeners that were added in Servlet 3.0.

## Description

This sample application declares a `javax.servlet.ServletContextListener` (of type `web.servlet.dynamicregistration_war.TestServletContextListener`) in its deployment descriptor. This ServletContextListener registers a `javax.servlet.Servlet` (of type `web.servlet.dynamicregistration_war.TestServlet`) with name `DynamicServlet`, a `javax.servlet.Filter` (of type `web.servlet.dynamicregistration_war.TestFilter`) with name `DynamicFilter`, and a `javax.servlet.ServletRequestListener` (of type `web.servlet.dynamicregistration_war.TestServletRequestListener`) in response to the `ServletContextListener.contextInitialized` event.

The `Servlet`, `Filter`, and `ServletRequestListener` are registered using the `ServletContext.addServlet`, `ServletContext.addFilter`, and `ServletContext.addListener` methods, respectively, which are new in Servlet 3.0.

`ServletContext.addServlet` returns a `javax.servlet.ServletRegistration` object, through which all aspects of the registered `Servlet`, including its mappings and initialization parameters, may be configured. Similarly, `ServletContext.addFilter` returns a `FilterRegistration` object, through which all aspects of the registered `Filter`, including its mappings and initialization parameters, may be configured.

The test client accesses the registered `Servlet` at its designated URI. The `Servlet` makes sure that the `ServletRequestListener`, as well as the `Filter` that was mapped to the `Servlet`, have both been invoked, by checking for the existence of `ServletRequest` attributes that were supposed to have been set by these entities.

## 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/dynamicregistration-war`.
3. ````Change directory to `app_dir.
   `
4. Build, deploy and run the sample application using the `all` target``

`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

5. Note: You can run the test in one of the following ways:
   - Use the browser to access http:<javaee.server.name>:<javaee.server.port>/dynamicregistration_war
     The following output is expected in the browser:
     HELLO WORLD!
   - `app_dir> ant run`
6. Use the target `undeploy` to undeploy the application.

   `app_dir> ant undeploy`

7. 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 `dynamicregistration-war`, and click Open Project.
3. In the Projects tab, right click `dynamicregistration_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.