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 nameweb-fragment.xmlfilter class@WebFilterfilter action
webfragment1.jar Wf1TestFilter.javapresentappend "1" to request attribute "filterMessage"
webfragment2.jarwith name A and meta-data for filtersWf2TestFilter.javanoappend "2" to request attribute "filterMessage"
webfragment3.jarwith name BWf3TestFilter.javapresentappend "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:
  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 java client

  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 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.