private support for your internal/customer projects ... custom extensions and distributions ... versioned snapshots for indefinite support ... scalability guidance for your apps and Ajax/Comet projects ... development services from 1 day to full product delivery
To deploy a web application or WAR into different environments, most
likely you will need to customize the webapp for compatibility with each
environment. The challenge is to do so without changing the webapp itself.
You can use a jetty.xml
file for some of this work
since it is not part of the webapp. But there are some changes that
jetty.xml
cannot accomplish, for example, modifications
to servlet init-params and context init-params. Using
webdefault.xml
is not an option because Jetty applies
webdefault.xml
to a web application
before the application's own
WEB-INF/web.xml
, which means that it cannot override values
inside the webapp's web.xml
.
The solution is override-web.xml
. It is a
web.xml
file that Jetty applies to a web application
after the application's own
WEB-INF/web.xml
, which means that it can override
values or add new elements. You define it per-webapp, using the Jetty XML Syntax.
You can specify the override-web.xml
to use for
an individual web application, in that webapp's jetty-web.xml
.
<Configure class="org.eclipse.jetty.webapp.WebAppContext"> ... <!-- Set up the path to the custom override descriptor, relative to your $(jetty.home) directory or to the current directory --> <Set name="overrideDescriptor"><SystemProperty name="jetty.home" default="."/>/my/path/to/override-web.xml</Set> ... </Configure>
The equivalent in code is:
import org.eclipse.jetty.webapp.WebAppContext; ... WebAppContext wac = new WebAppContext(); ... //Set the path to the override descriptor, based on your $(jetty.home) directory wac.setOverrideDescriptor(System.getProperty("jetty.home")+"/my/path/to/override-web.xml"); ...
Alternatively, use the classloader (Jetty Classloading) to get the path to the override descriptor as a resource.
Use the <overrideDescriptor>
tag as
follows:
<project> ... <plugins> <plugin> ... <artifactId>jetty-maven-plugin</artifactId> <configuration> <webAppConfig> ... <overrideDescriptor>src/main/resources/override-web.xml</overrideDescriptor> </webAppConfig> </configuration> </plugin> ... </plugins> ... </project>
webdefault.xml
–Information for this
web.xml
-formatted file, applied before the
webapp's web.xml
webapp.
jetty.xml
–Reference for
jetty.xml
files
See an error or something missing? Contribute to this documentation at Github!