If you’re looking for a fast and easy way to run your webapp, without needing to install and administer a Jetty distro, then look no further, the Jetty Runner is here! The idea of the Jetty Runner is extremely simple – run a webapp from the command line using a single jar and as much default configuration as possible:
java -jar jetty-runner.jar my.war
Voila! Jetty will start on port 8080 and deploy the my.war webapp. Couldn’t get much simpler, could it?
You can also deploy multiple webapps – either packed or unpacked wars – from the command line. In this example, my.war will be available at http://host:8080/one and the my2 webapp will be available at http://host:8080/two:
java -jar jetty-runner.jar --path /one my1.war --path /two my2
Or, for those webapps that need a little more configuration, you can run them via jetty context config files:
java -jar jetty-runner.jar contexts/my.xml
You can configure the most common things from the command line, like the port to start on, and whether to generate a request log or not:
java --jar jetty-runner.jar --port 9090 --log my/request/log/goes/here my.war
You can even configure a JDBC JNDI Resource entry right on the command line. Here’s an example to define a Postgres DB available in JNDI at java:comp/env/jdbc/mydatasource:
java -jar jetty-runner.jar --lib ~/src/tools/derby/ --lib ~/src/tools/atomikos --jdbc org.apache.derby.jdbc.EmbeddedXADataSource "databaseName=testdb;createDatabase=create" "jdbc/mydatasource" my.war
The syntax of the –jdbc argument is:
--jdbc <classname of Driver or XADataSource> <db properties> <jndiname>
You’ll also have to tell jetty where to find your database driver and Atomikos, which we use to provide a transaction manager and wrap XA and non-XA Resources into a DataSource you can access from your webapp.
You’ll notice the –lib argument, which is one way to tell jetty about extra jars you want to put onto the container’s classpath. We also give you:
--jar <filename> --classes <dir>
And as if all that wasn’t enough, you can get full configuration control using a jetty.xml configuration file:
java -jar jetty-runner.jar --config my/jetty.xml my.war
You can see all your options with:
java -jar jetty-runner.jar --help
How to get the jetty-runner.jar
The jetty runner is in the jetty-contrib svn repository and as such is no longer distributed as part of the standard jetty release.
At present, there is no distribution of the modules in the jetty-contrib repo (coming soon), however they are tagged
with the same release tags as the main jetty release.
So to obtain the jetty runner:
- do an svn checkout from https://svn.codehaus.org/jetty-contrib/tags/jetty-contrib-<tag>, where tag is 7.0.0pre1 or higher release number, eg:
- mvn clean install
- the jar file to use will be in target/jetty-runner-<tag>.jar
UPDATE 10 November 2008
The jetty-runner jar can be downloaded form the main maven repo at: http://repo2.maven.org/maven2/org/mortbay/jetty/jetty-runner/