The Jetty web application server is great. It is just not very well document and when it is documented it is aimed for the very uninitiated. If you’re using Jetty, it is almost like an old boys club – ‘you made it’.
Still, it appears that Jetty and Tomcat are becoming much more similar in their way of doing things, with both using a somewhat proprietary, if you can say that on an open source project, configuration schemes. So how do you deploy a web application to Jetty?
- Create a WAR file for your application. This is standard and I assume you already know how to do this with Ant or inside of Eclispe (if you are truly lazy and I am often very lazy). Like any WAR file it will contain a deployment descriptor – web.xml – which will specify information about filters, servlets, jsp files and other standard configuration options.
- Like Tomcat, Jetty can use a context file to specify the server-specific configuration of the web application. In Jetty, context files live in the aptly named contexts folder. Each context file looks something like this (example taken from Jetty’s documentation):
1 2 3 4 5 6
< ?xml version="1.0" encoding="ISO-8859-1"?> < !DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"> <configure class="org.mortbay.jetty.webapp.WebAppContext"> <set name="contextPath">/test</set> <set name="war"><systemproperty name="jetty.home" default="."/>/webapps/test.war</set> </configure>
In this case, the
contextPathelement specifies the context by which users will find the application on your server; in this casehttp://[domain-name]/test/. Thewarelement represents the location of the WAR file. Here, it is inside the Jetty home directory, under the standard webapps folder, using a WAR file calledtest.war. If your WAR file is exploded, just put the name of the folder under which the files reside. - Save the context file with the same name as your web application WAR file inside the
contextsdirectory. - Put your WAR file in the location referenced in the context file (e.g.
$JETTY_HOME/webapps/test.war) - Start Jetty from the command line by calling
java -jar start.jar
when in the home Jetty directory.
I used Jetty 6.1.7 to verify the code.
In short, this is really easy.
Tags: context · context.xml · http · Java · jetty · jsp · tomcat · web application server · web application · web.xml · XML5 Comments
5 responses so far ↓
Hi,
in the context xml, “set” should be “Set”.
thanks.
may i quote this article in my blog? thanks
Junmin
Feel free to quote!
This is very useful information. But if I have to access images present in the application server and if the images are kept out side jetty directory then show can I access them using relative url?
if you get this error: java.lang.ClassNotFoundException: org.mortbay.jetty.webapp.WebAppContext
try to use: org.eclipse.jetty.webapp.WebAppContext
[...] Deploying a web application to Jetty [...]