Eclipse Jetty® - Web Container & Clients - supports HTTP/2, HTTP/1.1, HTTP/1.0, websocket, servlets, and more
Go to file
Greg Wilkins ec2dbe73a8
Fully async Multipart Form handling (#9975)
A fully async ContentSourceCompletableFuture for use by MultiPartFormData and MultiPartByteRanges
Restructure MultiPartFormData to have a Parser class
---------

Signed-off-by: Simone Bordet <simone.bordet@gmail.com>
Co-authored-by: Simone Bordet <simone.bordet@gmail.com>
2023-06-30 17:01:16 +02:00
.github Merge remote-tracking branch 'origin/jetty-11.0.x' into jetty-12.0.x 2023-03-24 13:44:13 -05:00
.mvn Enable errorprone and spotbugs for java 17 (#7604) 2022-02-17 10:12:01 +10:00
build Merge remote-tracking branch 'origin/jetty-11.0.x' into jetty-12.0.x 2023-06-05 17:31:13 +02:00
documentation Fully async Multipart Form handling (#9975) 2023-06-30 17:01:16 +02:00
javadoc Updating to version 12.0.0-SNAPSHOT 2023-05-02 13:43:47 -05:00
jetty-core Fully async Multipart Form handling (#9975) 2023-06-30 17:01:16 +02:00
jetty-ee8 Merge remote-tracking branch 'jetty-11/jetty-11.0.x' into jetty-12.0.x 2023-06-29 12:55:35 +02:00
jetty-ee9 Merge remote-tracking branch 'origin/jetty-11.0.x' into fix/12.0.x/merge-11.0.x 2023-06-30 06:56:03 -05:00
jetty-ee10 Fully async Multipart Form handling (#9975) 2023-06-30 17:01:16 +02:00
jetty-home Jetty 12 inserted handler in ee10 servlet context (#9927) 2023-06-22 17:04:49 +02:00
jetty-integrations Remove duplicated classes from test session, fix some to be able to run in parallel and not restarting 3rd party for each tests (#9782) 2023-06-09 06:47:36 +10:00
logos Issue #4572 - Mechanical Change to use org.slf4j 2020-03-16 15:48:25 -05:00
tests Merge remote-tracking branch 'origin/jetty-11.0.x' into jetty-12.0.x 2023-06-29 15:01:19 +02: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
CONTRIBUTING.md Testing gpg signature setup 2019-09-25 12:42:32 -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 Issue #4568 - update to use jakarta.servlet 5.0.0 2020-03-31 14:54:59 +10:00
README.md Jetty-12.0.x tests in parallel (down build time on CI from 1h25 to 55min) some modules are still not parallel due to some static usage (#9635) 2023-04-21 10:42:12 +10:00
SECURITY.md Update SECURITY.md (#9333) 2023-02-14 08:30:51 -06:00
VERSION.txt Merge remote-tracking branch 'origin/release/12.0.0.beta1' into jetty-12.0.x 2023-05-03 15:25:11 -05:00
header-template.txt Happy no year 2023-02-15 15:22:32 +11:00
pom.xml Merge remote-tracking branch 'origin/jetty-11.0.x' into jetty-12.0.x 2023-06-29 15:01:19 +02:00

README.md

Eclipse Jetty Canonical Repository

This is the canonical repository for the 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

Jetty is a lightweight highly scalable java based web server and servlet engine. Our goal is to support web protocols like HTTP, HTTP/2 and WebSocket 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 async web server that has a long history as a component oriented technology 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 Jetty Eclipse website.

Building

Apache Maven 3.8.0 and OpenJDK requirements:

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

Full Build with All Tests:

mvn clean install

Fast Build if you need jars and distribution (not running tests, checkstyle, enforcer, license check):

mvn -Pfast clean install

Optional build tools:

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

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 standalone tarball
jetty-10.0.x jetty-runner/target/jetty-runner-<ver>.jar The Jetty Runner uber jar
jetty-11.0.x jetty-runner/target/jetty-runner-<ver>.jar The Jetty Runner uber jar
jetty-12.0.x jetty-ee10/jetty-ee10-runner/target/jetty-ee10-runner-<ver>.jar The Jetty Runner uber jar 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 uber jar 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 uber jar for ee8/Servlet 4 (javax.servlet) webapps

Note: The build tests do a lot of stress testing, and on some machines it is necessary to set the file descriptor limit to greater than 2048 for the tests to all 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 runned in parallel because accessing/modifying some static fields or for any other reasons, the test should be marked with the annotation

@Isolated("Access static field of Configurations")

Professional Services

Expert advice and production support are available through Webtide.com.