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