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());