Eclipse Jetty® - Web Container & Clients - supports HTTP/2, HTTP/1.1, HTTP/1.0, websocket, servlets, and more
Go to file
Simone Bordet af90b35ee7
Moved class `Flags` from `http2.internal` back to `http2` to be used publicly.
Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
2023-07-16 12:09:33 +02:00
.github Merge `jetty-11.0.x` into `jetty-12.0.x` - July 14 (#10108) 2023-07-14 20:21:11 -05:00
.mvn Enable errorprone and spotbugs for java 17 (#7604) 2022-02-17 10:12:01 +10:00
build Merged branch 'jetty-11.0.x' into 'jetty-12.0.x'. 2023-07-14 17:49:07 +02:00
documentation Merged branch 'jetty-11.0.x' into 'jetty-12.0.x'. 2023-07-16 12:01:43 +02:00
javadoc Updating to version 12.0.0-SNAPSHOT 2023-07-03 16:33:26 -05:00
jetty-core Moved class `Flags` from `http2.internal` back to `http2` to be used publicly. 2023-07-16 12:09:33 +02:00
jetty-ee8 Merge `jetty-11.0.x` into `jetty-12.0.x` - July 14 (#10108) 2023-07-14 20:21:11 -05:00
jetty-ee9 Merged branch 'jetty-11.0.x' into 'jetty-12.0.x'. 2023-07-16 12:01:43 +02:00
jetty-ee10 Merged branch 'jetty-11.0.x' into 'jetty-12.0.x'. 2023-07-16 12:01:43 +02:00
jetty-home Merged branch 'jetty-11.0.x' into 'jetty-12.0.x'. 2023-07-16 12:01:43 +02:00
jetty-integrations Merge `jetty-11.0.x` into `jetty-12.0.x` - July 14 (#10108) 2023-07-14 20:21:11 -05:00
logos Issue #4572 - Mechanical Change to use org.slf4j 2020-03-16 15:48:25 -05:00
tests Merge `jetty-11.0.x` into `jetty-12.0.x` - July 14 (#10108) 2023-07-14 20:21:11 -05:00
.gitattributes Updating attributes 2020-09-25 09:48:38 -05:00
.gitignore Initial Dependency Update Reports 2023-03-08 15:12:28 -06:00
.lgtm.yml Bump java_version to 17 2022-12-14 13:48:52 -06:00
CODE_COVERAGE.md http-spi test improvement (#62) 2016-05-04 10:56:56 +10:00
CODE_OF_CONDUCT.md Fixes #10107 (#10109) 2023-07-14 13:43:40 -05:00
CONTRIBUTING.md Merge `jetty-11.0.x` into `jetty-12.0.x` - July 14 (#10108) 2023-07-14 20:21:11 -05:00
Jenkinsfile remove snapshot repositories, force module order (may not work with mvnd) (#9771) 2023-05-15 13:21:23 +10:00
Jenkinsfile-autobahn Jetty 12.0.x publish dependency report (#9504) 2023-03-16 13:06:05 +10:00
Jenkinsfile-dependency-report Jetty 12.0.x publish dependency report (#9504) 2023-03-16 13:06:05 +10:00
Jmh_Jenkinsfile Merge branch 'jetty-9.4.x' into jetty-10.0.x 2019-07-09 12:57:26 +10:00
KEYS.txt add GPG key and developer tag 2020-11-04 17:25:11 +01:00
LICENSE Issue #5784 - Fixing LICENSE file 2020-12-10 15:45:35 -06:00
NOTICE.txt Merge `jetty-11.0.x` into `jetty-12.0.x` - July 14 (#10108) 2023-07-14 20:21:11 -05:00
README.md Merge `jetty-11.0.x` into `jetty-12.0.x` - July 14 (#10108) 2023-07-14 20:21:11 -05:00
SECURITY.md Merge `jetty-11.0.x` into `jetty-12.0.x` - July 14 (#10108) 2023-07-14 20:21:11 -05:00
VERSION.txt Updating to version 12.0.0-SNAPSHOT 2023-07-03 16:33:26 -05:00
header-template.txt Happy no year 2023-02-15 15:22:32 +11:00
pom.xml Merge `jetty-11.0.x` into `jetty-12.0.x` - July 14 (#10108) 2023-07-14 20:21:11 -05:00

README.md

Eclipse Jetty Canonical Repository

This is the canonical repository for the Eclipse Jetty project, feel free to fork and contribute now!

Submitting a patch or pull request?

Make sure you have an Eclipse Contributor Agreement (ECA) on file.

Project description

Eclipse Jetty is a lightweight, highly scalable, Java-based web server and Servlet engine. Jetty's goal is to support web protocols (HTTP/1, HTTP/2, HTTP/3, WebSocket, etc.) in a high volume low latency way that provides maximum performance while retaining the ease of use and compatibility with years of Servlet development. Jetty is a modern fully asynchronous web server that has a long history as a component oriented technology, and can be easily embedded into applications while still offering a solid traditional distribution for webapp deployment.

Webapp Example

$ mkdir base && cd base
$ java -jar $JETTY_HOME/start.jar --add-modules=http,ee10-deploy
$ cp ~/src/myproj/target/mywebapp.war webapps
$ java -jar $JETTY_HOME/start.jar 

Multiple Versions Webapp Example

$ mkdir base && cd base
$ java -jar $JETTY_HOME/start.jar --add-modules=http,ee10-deploy,ee8-deploy
$ cp ~/src/myproj/target/mywebapp10.war webapps
$ cp ~/src/myproj/target/mywebapp8.war webapps
$ echo environment: ee8 > webapps/mywebapp8.properties
$ java -jar $JETTY_HOME/start.jar 

Embedded Example

Server server = new Server(port);
ServletContextHandler context = new ServletContextHandler(server, "/");
context.addServlet(MyServlet.class, "/*");
server.start();

Documentation

Project documentation is available on the Eclipse Jetty website.

Building

Apache Maven and OpenJDK requirements:

Branch Maven Version Minimum JDK Recommended JDK
jetty-10.0.x Maven 3.8.6+ OpenJDK 11 OpenJDK 17 (for optional virtual threads and HTTP/3 support)
jetty-11.0.x Maven 3.8.6+ OpenJDK 11 OpenJDK 17 (for optional virtual threads and HTTP/3 support)
jetty-12.0.x Maven 3.8.6+ OpenJDK 17 OpenJDK 17

Full Build

If you want to build Jetty and run all the tests, which may takes quite some time, use the following command:

mvn clean install

Note: There are stress tests that on some hardware or operative system require to set the file descriptor limit to a value greater than 2048 to pass successfully (check your ulimit -n value).

Note: The tests are running in parallel using Junit5 parallel execution. This is configurable using the following properties:

    # to enable/disable the parallel execution
    -Djunit.jupiter.execution.parallel.enabled=true/false
    # number of tests executed in parallel
    -Djunit.jupiter.execution.parallel.config.fixed.parallelism=2

If a test cannot be run in parallel because it accesses/modifies some static fields or for any other reasons, the test should be marked with the annotation:

@Isolated("Access static field of Configurations")

Fast Build

If you just need the Jetty module jars and the Jetty Home distribution, you can run a fast build that does not run tests and other checks with the following command:

mvn -Pfast clean install

Optional Build Tools

  • graphviz - used by asciidoctor in the jetty-documentation module to produce various graphs
  • Docker - used to run some integration tests for testing third party integrations

Build Artifacts

Once the build is complete, you can find the built Jetty Maven artifacts in your Maven local repository, along with the following locations of note:

Branches Location Description
all jetty-home/target/jetty-home-<ver>.tar.gz The Jetty Home distribution
jetty-10.0.x jetty-runner/target/jetty-runner-<ver>.jar The Jetty Runner distribution
jetty-11.0.x jetty-runner/target/jetty-runner-<ver>.jar The Jetty Runner distribution
jetty-12.0.x jetty-ee10/jetty-ee10-runner/target/jetty-ee10-runner-<ver>.jar The Jetty Runner distribution for EE10/Servlet 6 (jakarta.servlet) webapps
jetty-12.0.x jetty-ee9/jetty-ee9-runner/target/jetty-ee9-runner-<ver>.jar The Jetty Runner distribution for EE9/Servlet 5 (jakarta.servlet) webapps
jetty-12.0.x jetty-ee8/jetty-ee8-runner/target/jetty-ee8-runner-<ver>.jar The Jetty Runner distribution for EE8/Servlet 4 (javax.servlet) webapps

Commercial Support

Expert advice and production support of Jetty are provided by Webtide.