| Java EE 7 SDK |
Servlet
The servlet reads the initial parameter, a request attribute, 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
that specifies metadata for a servlet.
In this case, it specifies the URL pattern. You
need to extend javax.servlet.http.HttpServlet.
Web Fragments
In this sample, there are three web fragment jars. Each jar has a filter.
The information of the web fragments is summarized in the following table:
| jar name | web-fragment.xml | filter class | @WebFilter | filter action |
|---|---|---|---|---|
webfragment1.jar |
Wf1TestFilter.java |
present | append "1" to the filterMessage request attribute |
|
webfragment2.jar |
with name A and meta-data for filters | Wf2TestFilter.java |
no | append "2" to the filterMessage request attribute |
webfragment3.jar |
with name B | Wf3TestFilter.java |
present | append "3" to the filterMessage request attribute |
The implementations of the filters are all similar.
For instance, Wf1TestFilter.java is implemented 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
that specifies meta-data for a filter.
In this case, it specifies the URL pattern and dispatcher types. You
need to extend javax.servlet.Filter.
Deployment Descriptor
The deployment descriptor specifies the ordering of the 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/web-app_3_0.xsd">
<absolute-ordering>
<name>A<name>
<others/>
<name>B<name>
</absolute-ordering>
</web-app>
With this absolute ordering, the web fragment jars are processed 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.
This sample application demonstrates the following key features:
Follow these instructions for building, deploying, and running
this sample application:
app_dir is the sample application base
directory: samples_install_dir/servlet/absolute-ordering-web-fragments.app_dir.mvn target:
To build the project, you can use the command line below, which compiles three fragment
jar files and builds the war file with those fragment
jar files under app_dir/absolute-ordering-web-fragments-war/target:
mvn install
To deploy the project, go to app_dir/absolute-ordering-web-fragments-war/ and
use the command below (you may need to start the server before deploying):
app_dir/absolute-ordering-web-fragments-war/>
asadmin deploy ./target/absolute-ordering-web-fragments-war.war
You have to modify the dependency element in
app_dir/absolute-ordering-web-fragments-war/pom.xml if you want to compile the
fragment jar files manually and build the war file seperately.
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>
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/absolute-ordering-web-fragments directory, select absolute-ordering-web-fragments-war, select Open Required Projects, and click Open Project.absolute-ordering-web-fragments-war and select Run to build, deploy, and run the project. Note: You may have to import the fragments jar files into WEB-INF/lib
If you have problems when running the application, refer the troubleshooting document.
Copyright © 1997-2013 Oracle and/or its affiliates. All rights reserved.