WAR-less Java web application with Jetty
Switch branches/tags
Nothing to show
Clone or download
Latest commit c8b463a Apr 24, 2015
Failed to load latest commit information.
src/main Polishing Apr 23, 2015
.gitignore Initial commit Apr 5, 2015
pom.xml Polish comments Apr 24, 2015
readme.md Add java command line to stop the web app Apr 22, 2015


Embedded Jetty web application

This project shows how to build a WAR-less Java web application with Jetty.

Only a single JVM is required to start the web app. No web container or JEE server is required.

Instead of building a war file, an auto-executable JAR file is built with Maven (ie. jetty-webapp-1.0.0-SNAPSHOT.jar)

This JAR contains all resources required by a web application: web.xml, index.jsp, images, js, css... The JettyServer class provides both a start and a stop method. Its main method starts the server. To stop it, you may use the Stop class.

Thanks to the Application Assembler Maven Plugin a start.sh and a stop.sh script are available.

All JAR dependencies are available in a lib\ sub-directory.

Try it

Download the code with git: git clone git://github.com/arey/embedded-jetty-webapp.git

Build and package the web application

cd embedded-jetty-webapp
mvn clean install

Start the web application

target/appassembler/bin/start.sh &

Stop the web application


Browse to http://localhost:8080/HelloWorld

Web port could be changed at startup:

target/appassembler/bin/start.sh 80 8090 &

Another possibility is to build a JAR that include all its dependencies (web app, jetty dependencies, logger, spring ...) :

mvn clean install -Pfatjar
java -jar target/jetty-webapp-1.0.0-SNAPSHOT-jar-with-dependencies.jar
java -cp target/jetty-webapp-1.0.0-SNAPSHOT-jar-with-dependencies.jar com.javaetmoi.jetty.Stop

Configuration rules

Compared to the Maven Standard Directory Layout of a WAR, the web application sources is not put into the src/main/webapp but into the src/main/resources/webapp. Thus the webapp resources are copied into the JAR in a webapp/ sub-directory.