Ver Fonte

uplift jetty to v12 (#9963)

Uplift ring-http-exchange to 1.2.0

Co-authored-by: jj <[email protected]>
ruroru há 2 meses atrás
pai
commit
08f3725296

+ 1 - 1
frameworks/Clojure/ring-http-exchange/pom.xml

@@ -114,7 +114,7 @@
         <dependency>
             <groupId>org.clojars.jj</groupId>
             <artifactId>ring-http-exchange</artifactId>
-            <version>1.1.0</version>
+            <version>1.2.0</version>
         </dependency>
         <dependency>
             <groupId>metosin</groupId>

+ 2 - 2
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
 

+ 2 - 2
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
 

+ 11 - 11
frameworks/Java/jetty/pom.xml

@@ -9,9 +9,9 @@
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>11</maven.compiler.source>
-        <maven.compiler.target>11</maven.compiler.target>
-        <jetty.version>10.0.24</jetty.version>
+        <maven.compiler.source>21</maven.compiler.source>
+        <maven.compiler.target>21</maven.compiler.target>
+        <jetty.version>12.0.22</jetty.version>
         <main.class>hello.handler.HelloWebServer</main.class>
     </properties>
 
@@ -23,8 +23,8 @@
             </activation>
             <dependencies>
                 <dependency>
-                    <groupId>org.eclipse.jetty</groupId>
-                    <artifactId>jetty-server</artifactId>
+                    <groupId>org.eclipse.jetty.ee10</groupId>
+                    <artifactId>jetty-ee10-servlet</artifactId>
                     <version>${jetty.version}</version>
                 </dependency>
             </dependencies>
@@ -34,7 +34,7 @@
                         <inherited>true</inherited>
                         <groupId>org.apache.maven.plugins</groupId>
                         <artifactId>maven-compiler-plugin</artifactId>
-                        <version>3.8.0</version>
+                        <version>3.14.0</version>
                         <configuration>
                             <excludes>
                                 <exclude>hello/servlet/**</exclude>
@@ -52,14 +52,14 @@
             </properties>
             <dependencies>
                 <dependency>
-                    <groupId>org.eclipse.jetty</groupId>
-                    <artifactId>jetty-servlet</artifactId>
+                    <groupId>org.eclipse.jetty.ee10</groupId>
+                    <artifactId>jetty-ee10-servlet</artifactId>
                     <version>${jetty.version}</version>
                 </dependency>
                 <dependency>
-                    <groupId>com.sun.activation</groupId>
-                    <artifactId>jakarta.activation</artifactId>
-                    <version>1.2.1</version>
+                    <groupId>jakarta.activation</groupId>
+                    <artifactId>jakarta.activation-api</artifactId>
+                    <version>2.1.3</version>
                 </dependency>
             </dependencies>
             <build>

+ 21 - 36
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 final class HelloWebServer
         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;
         }
-        
     }
 }

+ 25 - 24
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<String,String> 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;
     }
-
-}
+}

+ 20 - 16
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;
     }
 }

+ 3 - 3
frameworks/Java/jetty/src/main/java/hello/servlet/HelloWebServerServlet.java

@@ -4,14 +4,14 @@ import org.eclipse.jetty.server.HttpConfiguration;
 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 final class HelloWebServerServlet
         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");
 

+ 8 - 10
frameworks/Java/jetty/src/main/java/hello/servlet/JsonServlet.java

@@ -4,11 +4,10 @@ import java.io.IOException;
 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 @@ import org.eclipse.jetty.util.ajax.JSON;
 
 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<String,String> map = Collections.singletonMap("message","Hello, World!");
-        
+
         json.append(response.getWriter(),map);
     }
-
 }

+ 5 - 10
frameworks/Java/jetty/src/main/java/hello/servlet/PlaintextServlet.java

@@ -2,16 +2,11 @@ package hello.servlet;
 
 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());