Java EE 6 SDK

Samples Main Page

# The Servlet 3.0 Absolute Ordering Web Fragments Sample Application

This is a simple Servlet 3.0 application using web fragments with absolute ordering.
Servlet
The servlet reads the initial parameter, a request attribute and a context attribute and provides the result.

> `@WebServlet("/")
> public class TestServlet extends HttpServlet {
> public void service(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
> String message = "filterMessage=" + req.getAttribute("filterMessage");
> res.getWriter().println(message);
> }
> }`

`@javax.servlet.annotation.WebServlet` is an annotation specifying the metadata for given servlet. In this case, it specifies the url pattern. Note:You need to extend `javax.servlet.http.HttpServlet`.

Web Fragments

In this sample, there are three web fragment jar. Each jar has a filter. The information of web fragments are summarized in the following table:

jar name | web-fragment.xml | filter class | @WebFilter | filter action
--- | --- | --- | --- | ---
webfragment1.jar |  | Wf1TestFilter.java | present | append "1" to request attribute "filterMessage"
webfragment2.jar | with name A and meta-data for filters | Wf2TestFilter.java | no | append "2" to request attribute "filterMessage"
webfragment3.jar | with name B | Wf3TestFilter.java | present | append "3" to request attribute "filterMessage"

The source codes of filters are similar. For instance, Wf1TestFilter.java is as follows:

> `
> @WebFilter(urlPatterns={"/"}, dispatcherTypes= { DispatcherType.REQUEST })
> public class Wf1TestFilter implements Filter {
> public void init(FilterConfig filterConfig) throws ServletException {
> }
> public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
> String filterMessage = (String)req.getAttribute("filterMessage");
> if (filterMessage == null) {
> filterMessage = "";
> }
> filterMessage += "1";
> req.setAttribute("filterMessage", filterMessage);
> chain.doFilter(req, res);
> }
> public void destroy() {
> }
> }
> `

`javax.servlet.annotation.WebFilter` is an annotation specifying the meta-data for given filter. In this case, it specifies the url pattern and dispatcherTypes. Note:You need to extend `javax.servlet.Filter`.

Deployment Descriptor
The deployment descriptor has information specifying the ordering of web fragment being processed as follows:

> `<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.0" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
> <absolute-ordering>
> <name>A<name>
> <others/>
> <name>B<name>
> <absolute-ordering>
> </web-app>
> `

With this absolute ordering, one will process the web fragment jars in the following order: webfragment2.jar, webfragment1.jar, webfragment3.jar.

Sun GlassFish Enterprise Server Specific Deployment Configuration
There is no need to define any Sun GlassFish Enterprise Server-specific deployment descriptor (`sun-web.xml`) for this example.

## Building, Deploying, and Running the Application

Following are the instructions for building, deploying, and running this 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/javaee6/web/servlet/absolute-ordering-web-fragments-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 java client

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>/absolute_ordering_web_fragments_war
     The expected message in the browser is as follows:
     `filterMessage=213`
   - `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 `absolute-ordering-web-fragments-war`, select Open Required Projects, and click Open Project.
3. In the Projects tab, right click `absolute-ordering-web-fragments-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.