From 2f81b379b379c4dce544237ee3726196f7a6695f Mon Sep 17 00:00:00 2001 From: andrewlamb-est Date: Fri, 24 Oct 2025 15:20:11 +0100 Subject: [PATCH] AVRO-4192: [JAVA] Update Jetty to version 12.1.4 Signed-off-by: andrewlamb-est --- lang/java/ipc-jetty/pom.xml | 4 ++-- .../org/apache/avro/ipc/jetty/HttpServer.java | 23 ++++++++----------- .../apache/avro/ipc/jetty/StatsServer.java | 20 +++++++++------- .../avro/ipc/jetty/TestProtocolHttps.java | 2 +- .../ipc/jetty/TestStatsPluginAndServlet.java | 6 ++--- lang/java/ipc/pom.xml | 4 ++-- .../org/apache/avro/ipc/ResponderServlet.java | 8 +++---- .../apache/avro/ipc/stats/StatsServlet.java | 10 ++++---- lang/java/pom.xml | 13 ++++++----- pom.xml | 2 +- 10 files changed, 47 insertions(+), 45 deletions(-) diff --git a/lang/java/ipc-jetty/pom.xml b/lang/java/ipc-jetty/pom.xml index fdc2a258bdc..cdef006bc8a 100644 --- a/lang/java/ipc-jetty/pom.xml +++ b/lang/java/ipc-jetty/pom.xml @@ -106,8 +106,8 @@ jetty-server - org.eclipse.jetty - jetty-servlet + org.eclipse.jetty.${jetty.ee.version} + jetty-${jetty.ee.version}-servlet org.eclipse.jetty diff --git a/lang/java/ipc-jetty/src/main/java/org/apache/avro/ipc/jetty/HttpServer.java b/lang/java/ipc-jetty/src/main/java/org/apache/avro/ipc/jetty/HttpServer.java index 7fe71e16ba8..37a6950898a 100644 --- a/lang/java/ipc-jetty/src/main/java/org/apache/avro/ipc/jetty/HttpServer.java +++ b/lang/java/ipc-jetty/src/main/java/org/apache/avro/ipc/jetty/HttpServer.java @@ -31,9 +31,8 @@ import org.eclipse.jetty.server.HttpConfiguration; import org.eclipse.jetty.server.HttpConnectionFactory; import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.servlet.ServletContextHandler; -import org.eclipse.jetty.servlet.ServletHandler; -import org.eclipse.jetty.servlet.ServletHolder; +import org.eclipse.jetty.ee9.servlet.ServletContextHandler; +import org.eclipse.jetty.ee9.servlet.ServletHolder; /** An HTTP-based RPC {@link Server}. */ public class HttpServer implements Server { @@ -71,10 +70,8 @@ public HttpServer(ResponderServlet servlet, String bindAddress, int port) throws connector.setPort(port); server.addConnector(connector); - ServletHandler handler = new ServletHandler(); - handler.addServletWithMapping(new ServletHolder(servlet), "/*"); ServletContextHandler sch = new ServletContextHandler(); - sch.setServletHandler(handler); + sch.getServletHandler().addServletWithMapping(new ServletHolder(servlet), "/*"); server.setHandler(sch); } @@ -103,9 +100,9 @@ public HttpServer(ResponderServlet servlet, ConnectionFactory connectionFactory, connector.setPort(port); server.addConnector(connector); - ServletHandler handler = new ServletHandler(); - server.setHandler(handler); - handler.addServletWithMapping(new ServletHolder(servlet), "/*"); + ServletContextHandler sch = new ServletContextHandler(); + server.setHandler(sch); + sch.getServletHandler().addServletWithMapping(new ServletHolder(servlet), "/*"); } /** @@ -119,9 +116,9 @@ public HttpServer(ResponderServlet servlet, Connector connector) throws IOExcept if (server.getConnectors().length == 0 || Arrays.asList(server.getConnectors()).contains(connector)) { server.addConnector(connector); } - ServletHandler handler = new ServletHandler(); - server.setHandler(handler); - handler.addServletWithMapping(new ServletHolder(servlet), "/*"); + ServletContextHandler sch = new ServletContextHandler(); + server.setHandler(sch); + sch.getServletHandler().addServletWithMapping(new ServletHolder(servlet), "/*"); } /** @@ -154,7 +151,7 @@ public void close() { /** * Start the server. - * + * * @throws AvroRuntimeException if the underlying Jetty server throws any * exception while starting. */ diff --git a/lang/java/ipc-jetty/src/main/java/org/apache/avro/ipc/jetty/StatsServer.java b/lang/java/ipc-jetty/src/main/java/org/apache/avro/ipc/jetty/StatsServer.java index ea83dd1ac69..9b3767cdef7 100644 --- a/lang/java/ipc-jetty/src/main/java/org/apache/avro/ipc/jetty/StatsServer.java +++ b/lang/java/ipc-jetty/src/main/java/org/apache/avro/ipc/jetty/StatsServer.java @@ -21,13 +21,14 @@ import org.apache.avro.ipc.stats.StatsPlugin; import org.apache.avro.ipc.stats.StatsServlet; +import org.eclipse.jetty.ee9.servlet.ServletContextHandler; +import org.eclipse.jetty.ee9.servlet.ServletHolder; +import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.ContextHandler; -import org.eclipse.jetty.server.handler.HandlerList; import org.eclipse.jetty.server.handler.ResourceHandler; -import org.eclipse.jetty.servlet.ServletContextHandler; -import org.eclipse.jetty.servlet.ServletHolder; import org.eclipse.jetty.util.resource.Resource; +import org.eclipse.jetty.util.resource.ResourceFactory; /* This is a server that displays live information from a StatsPlugin. * @@ -54,21 +55,24 @@ public StatsServer(StatsPlugin plugin, int port) throws Exception { ServletHolder servletHolder = new ServletHolder(new StatsServlet(plugin)); servletContext.addServlet(servletHolder, "/"); - HandlerList handlers = new HandlerList(servletContext); + Handler.Sequence handlers = new Handler.Sequence(); - Resource classPathResource = Resource.newClassPathResource("/org/apache/avro/ipc/stats/static"); - if (classPathResource.exists() && classPathResource.isDirectory()) { + ResourceFactory resourceFactory = ResourceFactory.of(httpServer); + Resource classPathResource = resourceFactory.newResource("/org/apache/avro/ipc/stats/static"); + if (classPathResource != null && classPathResource.exists() && classPathResource.isDirectory()) { ResourceHandler resourceHandler = new ResourceHandler(); resourceHandler.setBaseResource(classPathResource); - resourceHandler.setDirectoriesListed(false); // Optional: prevent directory listing + resourceHandler.setDirAllowed(false); // Optional: prevent directory listing ContextHandler staticContext = new ContextHandler(); staticContext.setContextPath("/static"); staticContext.setHandler(resourceHandler); - handlers.prependHandler(staticContext); + handlers.addHandler(staticContext); } + handlers.addHandler(servletContext); + httpServer.setHandler(handlers); httpServer.start(); diff --git a/lang/java/ipc-jetty/src/test/java/org/apache/avro/ipc/jetty/TestProtocolHttps.java b/lang/java/ipc-jetty/src/test/java/org/apache/avro/ipc/jetty/TestProtocolHttps.java index 57aae423c26..78c8a68c3e8 100644 --- a/lang/java/ipc-jetty/src/test/java/org/apache/avro/ipc/jetty/TestProtocolHttps.java +++ b/lang/java/ipc-jetty/src/test/java/org/apache/avro/ipc/jetty/TestProtocolHttps.java @@ -37,7 +37,7 @@ public Server createServer(Responder testResponder) throws Exception { System.setProperty("javax.net.ssl.trustStore", "src/test/truststore"); System.setProperty("javax.net.ssl.trustStorePassword", "avrotest"); SslConnectionFactory connectionFactory = new SslConnectionFactory("HTTP/1.1"); - SslContextFactory sslContextFactory = connectionFactory.getSslContextFactory(); + SslContextFactory.Server sslContextFactory = connectionFactory.getSslContextFactory(); sslContextFactory.setKeyStorePath(System.getProperty("javax.net.ssl.keyStore")); sslContextFactory.setKeyManagerPassword(System.getProperty("javax.net.ssl.password")); diff --git a/lang/java/ipc-jetty/src/test/java/org/apache/avro/ipc/jetty/TestStatsPluginAndServlet.java b/lang/java/ipc-jetty/src/test/java/org/apache/avro/ipc/jetty/TestStatsPluginAndServlet.java index 33563f96dce..e9f7a90f5ee 100644 --- a/lang/java/ipc-jetty/src/test/java/org/apache/avro/ipc/jetty/TestStatsPluginAndServlet.java +++ b/lang/java/ipc-jetty/src/test/java/org/apache/avro/ipc/jetty/TestStatsPluginAndServlet.java @@ -26,7 +26,7 @@ import java.nio.ByteBuffer; import java.util.Random; -import javax.servlet.UnavailableException; +import jakarta.servlet.UnavailableException; import org.apache.avro.AvroRemoteException; import org.apache.avro.Protocol; @@ -164,11 +164,11 @@ public Object respond(Message message, Object request) throws AvroRemoteExceptio /** * Demo program for using RPC stats. This automatically generates client RPC * requests. Alternatively a can be used (as below) to trigger RPCs. - * + * *
    * java -jar build/avro-tools-*.jar rpcsend '{"protocol":"sleepy","namespace":null,"types":[],"messages":{"sleep":{"request":[{"name":"millis","type":"long"}],"response":"null"}}}' sleep localhost 7002 '{"millis": 20000}'
    * 
- * + * * @param args * @throws Exception */ diff --git a/lang/java/ipc/pom.xml b/lang/java/ipc/pom.xml index 6f5fb359df9..1937e327855 100644 --- a/lang/java/ipc/pom.xml +++ b/lang/java/ipc/pom.xml @@ -169,8 +169,8 @@ velocity-engine-core
- javax.servlet - javax.servlet-api + jakarta.servlet + jakarta.servlet-api provided diff --git a/lang/java/ipc/src/main/java/org/apache/avro/ipc/ResponderServlet.java b/lang/java/ipc/src/main/java/org/apache/avro/ipc/ResponderServlet.java index a2fe5fa486c..c36ee9bae47 100644 --- a/lang/java/ipc/src/main/java/org/apache/avro/ipc/ResponderServlet.java +++ b/lang/java/ipc/src/main/java/org/apache/avro/ipc/ResponderServlet.java @@ -22,10 +22,10 @@ import java.nio.ByteBuffer; import java.util.List; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.avro.AvroRuntimeException; diff --git a/lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StatsServlet.java b/lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StatsServlet.java index 38c0bb2fe03..e40a3c03ad9 100644 --- a/lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StatsServlet.java +++ b/lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StatsServlet.java @@ -28,11 +28,11 @@ import java.util.Set; import java.util.Map.Entry; -import javax.servlet.ServletException; -import javax.servlet.UnavailableException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.ServletException; +import jakarta.servlet.UnavailableException; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.velocity.Template; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.VelocityEngine; diff --git a/lang/java/pom.xml b/lang/java/pom.xml index 08783e24bc7..a657aa5963a 100644 --- a/lang/java/pom.xml +++ b/lang/java/pom.xml @@ -46,7 +46,8 @@ 3.4.3 3.0 2.22.0 - 9.4.58.v20250814 + ee9 + 12.1.4 5.0.4 5.14.4 3.9.6 @@ -54,7 +55,7 @@ 4.2.15.Final 4.35.1 1.2.26 - 4.0.1 + 6.0.0 2.0.18 1.1.10.8 0.20.0 @@ -534,8 +535,8 @@ ${jetty.version} - org.eclipse.jetty - jetty-servlet + org.eclipse.jetty.${jetty.ee.version} + jetty-${jetty.ee.version}-servlet ${jetty.version} @@ -544,8 +545,8 @@ ${jetty.version} - javax.servlet - javax.servlet-api + jakarta.servlet + jakarta.servlet-api ${servlet-api.version} diff --git a/pom.xml b/pom.xml index 34f0171d7f2..4944ef2cd34 100644 --- a/pom.xml +++ b/pom.xml @@ -225,7 +225,7 @@ - 11 + 17 test provided