Jetty in JBoss
The following are required to build and run Jetty in JBoss:
- jdk1.4 (for JBoss4.0.5) or jdk1.5 (for JBoss4.2.x)
- Maven 2.0.4 or later
- A JBoss installation see Note
- JBoss-Jetty module in Jetty 6 (this is in the Jetty-src, under contrib/jboss)
Note: The Jetty-JBoss module is not buildable with versions of JBoss prior to 4.0.5. For runtime compability, please see the Compatibility Matrix below. Some JBoss 4.0.x versions require jsp-2.0 to be used, as the JBoss web console application appears to be incompatible with jsp-2.1.
After checking out the Jetty JBoss module, go to the command line and
cd to its home directory. Run:
mvn -P[jdk1.4|jdk1.5] -Djboss.home=path-to-jboss -Djboss.version=jboss-version clean install
- path-to-jboss is the location of your JBoss installation and jboss-version is the version number of your JBoss installation.
- building with profile jdk1.4 will include jsp-2.0 in the sar and building with profile jdk1.5 will include jsp-2.1 instead.
If you want to save yourself some typing, an alternate way to build it is to edit the
pom.xml. Edit the <properties> section and fill in the values for the <jboss.home> and <jboss.version> properties. Once these are set in the
pom.xml, you can do the build with:
mvn clean install
- delete the Tomcat files. In JBoss 4.0.x, delete
$JBOSS-HOME/server/default/deploy/jbossweb-tomcat55.sar; in JBoss 4.2.x, delete
$JBOSS-HOME/server/default/deploy/jboss-web.deployer(or from whichever deployment directory you are using).
- ensure you have built the Jetty JBoss module in
- copy the
$jetty.home/extras/jboss/target/jetty-JETTY-VERSION-jboss-JBOSS-VERSION.sar+ to your JBoss deploy directory (where JETTY-VERSION is the version of jetty you are using and JBOSS-VERSION is the version of JBoss).
+ Note: The paths given are for Jetty6. In Jetty7, the JBoss module folder has been moved to
You will find that the JBoss web-console refers to a Tomcat servlet, so you might want to comment that out in order to make it usable. You will need to edit the
$JBOSS-HOME/server/default/deploy/management/console-mgr.sar/web-console.war/WEB-INF/web.xml file and comment out this section:
<servlet> <servlet-name>Status Servlet</servlet-name> <servlet-class>org.jboss.web.tomcat.tc5.StatusServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Status Servlet</servlet-name> <url-pattern>/status</url-pattern> </servlet-mapping>
By default, Jetty will be configured to:
- have a thread pool containing a minimum of 10 and a maximum of 250 threads
- a SelectChannelConnector on port 8080
This configuration is contained in the
META-INF/jboss-service.xml file inside the sar.
In order to change the port, add other types of connectors- SSL, AJP13 - configure a request log, or change the thread pool, you need to un-pack the sar to a temporary directory, edit the
META-INF/jboss-service.xml file, repack it and copy the modified sar to the JBoss deploy directory.
Edit the META-INF/jboss-service.xml file from the sar (you'll need to unpack it first). Uncomment the following lines:
<!-- Uncomment for statistics <New id="StatsHandler" class="org.mortbay.jetty.handler.StatisticsHandler"> <Set name="handlers"> --> <!-- Uncomment for statistics </Set> </New> -->
Now re-jar the modified sar. You can use the StatisticsHandlerMBean to retrieve the statistics using the JMX console.
Using jetty-7 there is an org.eclipse.jetty.servlet.StatisticsServlet that you can configure in the jboss management webapps instead of the Tomcat org.jboss.web.tomcat.service.StatusServlet servlet.
Configuration note about Jetty-SAR and Struts Tiles usage
If you are using Struts Tiles for your web-application, you should probably edit
webdefault.xml in the SAR and change
false. If you do not, when you try to insert a tile value (or override one) with an empty value, then Jetty will supply a directory listing for that tile.
Version compatibility matrix: