diff --git a/frameworks/Clojure/ring-http-exchange/pom.xml b/frameworks/Clojure/ring-http-exchange/pom.xml
index 2c0f037dc44..bee1ed47c88 100644
--- a/frameworks/Clojure/ring-http-exchange/pom.xml
+++ b/frameworks/Clojure/ring-http-exchange/pom.xml
@@ -114,7 +114,7 @@
org.clojars.jj
ring-http-exchange
- 1.1.0
+ 1.2.0
metosin
diff --git a/frameworks/Java/jetty/jetty-servlet.dockerfile b/frameworks/Java/jetty/jetty-servlet.dockerfile
index 764c2eb58bc..a352022e489 100644
--- a/frameworks/Java/jetty/jetty-servlet.dockerfile
+++ b/frameworks/Java/jetty/jetty-servlet.dockerfile
@@ -1,10 +1,10 @@
-FROM maven:3.6.1-jdk-11-slim as maven
+FROM maven:3-eclipse-temurin-24-alpine as maven
WORKDIR /jetty
COPY pom.xml pom.xml
COPY src src
RUN mvn compile assembly:single -q -P servlet
-FROM openjdk:11.0.3-jdk-slim
+FROM openjdk:25-jdk-slim
WORKDIR /jetty
COPY --from=maven /jetty/target/jetty-example-0.1-jar-with-dependencies.jar app.jar
diff --git a/frameworks/Java/jetty/jetty.dockerfile b/frameworks/Java/jetty/jetty.dockerfile
index f8ff4d716d2..15c208ef4e8 100644
--- a/frameworks/Java/jetty/jetty.dockerfile
+++ b/frameworks/Java/jetty/jetty.dockerfile
@@ -1,10 +1,10 @@
-FROM maven:3.6.1-jdk-11-slim as maven
+FROM maven:3-eclipse-temurin-24-alpine as maven
WORKDIR /jetty
COPY pom.xml pom.xml
COPY src src
RUN mvn compile assembly:single -q
-FROM openjdk:11.0.3-jdk-slim
+FROM openjdk:25-jdk-slim
WORKDIR /jetty
COPY --from=maven /jetty/target/jetty-example-0.1-jar-with-dependencies.jar app.jar
diff --git a/frameworks/Java/jetty/pom.xml b/frameworks/Java/jetty/pom.xml
index 6156c5603f8..ee615b85538 100644
--- a/frameworks/Java/jetty/pom.xml
+++ b/frameworks/Java/jetty/pom.xml
@@ -9,9 +9,9 @@
UTF-8
- 11
- 11
- 10.0.24
+ 21
+ 21
+ 12.0.22
hello.handler.HelloWebServer
@@ -23,8 +23,8 @@
- org.eclipse.jetty
- jetty-server
+ org.eclipse.jetty.ee10
+ jetty-ee10-servlet
${jetty.version}
@@ -34,7 +34,7 @@
true
org.apache.maven.plugins
maven-compiler-plugin
- 3.8.0
+ 3.14.0
hello/servlet/**
@@ -52,14 +52,14 @@
- org.eclipse.jetty
- jetty-servlet
+ org.eclipse.jetty.ee10
+ jetty-ee10-servlet
${jetty.version}
- com.sun.activation
- jakarta.activation
- 1.2.1
+ jakarta.activation
+ jakarta.activation-api
+ 2.1.3
diff --git a/frameworks/Java/jetty/src/main/java/hello/handler/HelloWebServer.java b/frameworks/Java/jetty/src/main/java/hello/handler/HelloWebServer.java
index 85e63461518..0d76a933bef 100644
--- a/frameworks/Java/jetty/src/main/java/hello/handler/HelloWebServer.java
+++ b/frameworks/Java/jetty/src/main/java/hello/handler/HelloWebServer.java
@@ -1,29 +1,15 @@
package hello.handler;
-import java.io.IOException;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.eclipse.jetty.server.Handler;
-import org.eclipse.jetty.server.HttpConfiguration;
-import org.eclipse.jetty.server.HttpConnectionFactory;
-import org.eclipse.jetty.server.Request;
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.ServerConnector;
-import org.eclipse.jetty.server.handler.AbstractHandler;
-import org.eclipse.jetty.server.handler.AbstractHandlerContainer;
+import org.eclipse.jetty.server.*;
+import org.eclipse.jetty.util.Callback;
/**
* An implementation of the TechEmpower benchmark tests using the Jetty web
- * server.
+ * server.
*/
-public final class HelloWebServer
-{
- public static void main(String[] args) throws Exception
- {
+public final class HelloWebServer {
+ public static void main(String[] args) throws Exception {
Server server = new Server(8080);
ServerConnector connector = server.getBean(ServerConnector.class);
HttpConfiguration config = connector.getBean(HttpConnectionFactory.class).getHttpConfiguration();
@@ -36,34 +22,33 @@ public static void main(String[] args) throws Exception
server.start();
server.join();
}
-
- public static class PathHandler extends AbstractHandler
- {
- JsonHandler _jsonHandler=new JsonHandler();
- PlainTextHandler _plainHandler=new PlainTextHandler();
-
- public PathHandler()
- {
+
+ public static class PathHandler extends Handler.Abstract {
+ JsonHandler _jsonHandler = new JsonHandler();
+ PlainTextHandler _plainHandler = new PlainTextHandler();
+
+ public PathHandler() {
addBean(_jsonHandler);
addBean(_plainHandler);
}
@Override
- public void setServer(Server server)
- {
+ public void setServer(Server server) {
super.setServer(server);
_jsonHandler.setServer(server);
_plainHandler.setServer(server);
}
@Override
- public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
- {
- if ("/plaintext".equals(target))
- _plainHandler.handle(target,baseRequest,request,response);
- else if ("/json".equals(target))
- _jsonHandler.handle(target,baseRequest,request,response);
+ public boolean handle(Request request, Response response, Callback callback) {
+ String uri = request.getHttpURI().getPath();
+
+ if ("/plaintext".equals(uri))
+ return _plainHandler.handle(request, response, callback);
+ else if ("/json".equals(uri))
+ return _jsonHandler.handle(request, response, callback);
+ else
+ return false;
}
-
}
}
diff --git a/frameworks/Java/jetty/src/main/java/hello/handler/JsonHandler.java b/frameworks/Java/jetty/src/main/java/hello/handler/JsonHandler.java
index e99c9790a5f..8a7da96f576 100644
--- a/frameworks/Java/jetty/src/main/java/hello/handler/JsonHandler.java
+++ b/frameworks/Java/jetty/src/main/java/hello/handler/JsonHandler.java
@@ -1,34 +1,35 @@
package hello.handler;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.Map;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
import org.eclipse.jetty.http.HttpField;
-import org.eclipse.jetty.http.HttpHeader;
-import org.eclipse.jetty.http.PreEncodedHttpField;
+import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Request;
-import org.eclipse.jetty.server.handler.AbstractHandler;
-import org.eclipse.jetty.util.ajax.JSON;
+import org.eclipse.jetty.server.Response;
+import org.eclipse.jetty.util.Callback;
+
+import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
+public class JsonHandler extends Handler.Abstract {
+
+ private static final HttpField JSON_HEADER = new HttpField("Content-Type", "application/json");
+ private static final String JSON_RESPONSE = "{\"message\": \"Hello, World!\"}";
-public class JsonHandler extends AbstractHandler
-{
- private JSON json = new JSON();
- HttpField contentType = new PreEncodedHttpField(HttpHeader.CONTENT_TYPE,"application/json");
@Override
- public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
- {
- baseRequest.setHandled(true);
- baseRequest.getResponse().getHttpFields().add(contentType);
- Map map = Collections.singletonMap("message","Hello, World!");
- json.append(response.getWriter(),map);
+ public boolean handle(Request request, Response response, Callback callback) {
+ try {
+ response.setStatus(200);
+ response.getHeaders().add(JSON_HEADER);
+
+ byte[] contentBytes = JSON_RESPONSE.getBytes(StandardCharsets.UTF_8);
+ ByteBuffer contentBuffer = ByteBuffer.wrap(contentBytes);
+ response.getHeaders().put("Content-Length", String.valueOf(contentBytes.length));
+
+ response.write(true, contentBuffer, callback);
+ } catch (Exception e) {
+ callback.failed(e);
+ }
+ return true;
}
-
-}
+}
\ No newline at end of file
diff --git a/frameworks/Java/jetty/src/main/java/hello/handler/PlainTextHandler.java b/frameworks/Java/jetty/src/main/java/hello/handler/PlainTextHandler.java
index fee97b635b9..940110224db 100644
--- a/frameworks/Java/jetty/src/main/java/hello/handler/PlainTextHandler.java
+++ b/frameworks/Java/jetty/src/main/java/hello/handler/PlainTextHandler.java
@@ -1,31 +1,35 @@
package hello.handler;
-import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
import org.eclipse.jetty.http.HttpField;
import org.eclipse.jetty.http.HttpHeader;
import org.eclipse.jetty.http.MimeTypes;
import org.eclipse.jetty.http.PreEncodedHttpField;
+import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Request;
-import org.eclipse.jetty.server.handler.AbstractHandler;
-import org.eclipse.jetty.util.BufferUtil;
+import org.eclipse.jetty.server.Response;
+import org.eclipse.jetty.util.Callback;
-public class PlainTextHandler extends AbstractHandler
-{
- ByteBuffer helloWorld = BufferUtil.toBuffer("Hello, World!");
- HttpField contentType = new PreEncodedHttpField(HttpHeader.CONTENT_TYPE,MimeTypes.Type.TEXT_PLAIN.asString());
+public class PlainTextHandler extends Handler.Abstract {
+ private static final String RESPONSE_BODY = "Hello, World!";
+ private static final HttpField contentType = new PreEncodedHttpField(HttpHeader.CONTENT_TYPE, MimeTypes.Type.TEXT_PLAIN.asString());
@Override
- public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
- {
- baseRequest.setHandled(true);
- baseRequest.getResponse().getHttpFields().add(contentType);
- baseRequest.getResponse().getHttpOutput().sendContent(helloWorld.slice());
+ public boolean handle(Request request, Response response, Callback callback) {
+ try {
+ response.setStatus(200);
+ response.getHeaders().put(contentType);
+
+ byte[] contentBytes = RESPONSE_BODY.getBytes(StandardCharsets.UTF_8);
+ ByteBuffer contentBuffer = ByteBuffer.wrap(contentBytes);
+ response.getHeaders().put("Content-Length", String.valueOf(contentBytes.length));
+
+ response.write(true, contentBuffer, callback);
+ } catch (Exception e) {
+ callback.failed(e);
+ }
+ return true;
}
}
diff --git a/frameworks/Java/jetty/src/main/java/hello/servlet/HelloWebServerServlet.java b/frameworks/Java/jetty/src/main/java/hello/servlet/HelloWebServerServlet.java
index b9ab9af85c9..2859edd1aa7 100644
--- a/frameworks/Java/jetty/src/main/java/hello/servlet/HelloWebServerServlet.java
+++ b/frameworks/Java/jetty/src/main/java/hello/servlet/HelloWebServerServlet.java
@@ -4,14 +4,14 @@
import org.eclipse.jetty.server.HttpConnectionFactory;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
-import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.ee10.servlet.ServletContextHandler;
/**
* An implementation of the TechEmpower benchmark tests using the Jetty web
* server.
*/
-public final class HelloWebServerServlet
+public final class HelloWebServerServlet
{
public static void main(String[] args) throws Exception
@@ -26,7 +26,7 @@ public static void main(String[] args) throws Exception
context.setContextPath("/");
server.setHandler(context);
- context.addServlet(org.eclipse.jetty.servlet.DefaultServlet.class,"/");
+ context.addServlet(org.eclipse.jetty.ee10.servlet.DefaultServlet.class,"/");
context.addServlet(JsonServlet.class,"/json");
context.addServlet(PlaintextServlet.class,"/plaintext");
diff --git a/frameworks/Java/jetty/src/main/java/hello/servlet/JsonServlet.java b/frameworks/Java/jetty/src/main/java/hello/servlet/JsonServlet.java
index 9533083c18c..2d374a0a21d 100644
--- a/frameworks/Java/jetty/src/main/java/hello/servlet/JsonServlet.java
+++ b/frameworks/Java/jetty/src/main/java/hello/servlet/JsonServlet.java
@@ -4,11 +4,10 @@
import java.util.Collections;
import java.util.Map;
-import javax.servlet.GenericServlet;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.GenericServlet;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.eclipse.jetty.util.ajax.JSON;
@@ -16,16 +15,15 @@
public class JsonServlet extends GenericServlet
{
- private JSON json = new JSON();
-
+ private final JSON json = new JSON();
+
@Override
- public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException
+ public void service(ServletRequest req, ServletResponse res) throws IOException
{
HttpServletResponse response= (HttpServletResponse)res;
response.setContentType("application/json");
Map map = Collections.singletonMap("message","Hello, World!");
-
+
json.append(response.getWriter(),map);
}
-
}
diff --git a/frameworks/Java/jetty/src/main/java/hello/servlet/PlaintextServlet.java b/frameworks/Java/jetty/src/main/java/hello/servlet/PlaintextServlet.java
index 7e72d80b9ad..99b245478f5 100644
--- a/frameworks/Java/jetty/src/main/java/hello/servlet/PlaintextServlet.java
+++ b/frameworks/Java/jetty/src/main/java/hello/servlet/PlaintextServlet.java
@@ -2,16 +2,11 @@
import java.io.IOException;
import java.nio.charset.StandardCharsets;
-import java.util.Collections;
-import java.util.Map;
-import javax.activation.MimeType;
-import javax.servlet.GenericServlet;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.GenericServlet;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.eclipse.jetty.http.MimeTypes;
@@ -19,7 +14,7 @@ public class PlaintextServlet extends GenericServlet
{
byte[] helloWorld = "Hello, World!".getBytes(StandardCharsets.ISO_8859_1);
@Override
- public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException
+ public void service(ServletRequest req, ServletResponse res) throws IOException
{
HttpServletResponse response= (HttpServletResponse)res;
response.setContentType(MimeTypes.Type.TEXT_PLAIN.asString());