From 9dac2e001b9554f3a931f8ab9cf0ef59fe9385b1 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/StaticServlet.java | 9 ++++---- .../apache/avro/ipc/jetty/StatsServer.java | 12 +++++----- .../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 +- 11 files changed, 46 insertions(+), 47 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/StaticServlet.java b/lang/java/ipc-jetty/src/main/java/org/apache/avro/ipc/jetty/StaticServlet.java index 2e28ba14eba..269548c7926 100644 --- a/lang/java/ipc-jetty/src/main/java/org/apache/avro/ipc/jetty/StaticServlet.java +++ b/lang/java/ipc-jetty/src/main/java/org/apache/avro/ipc/jetty/StaticServlet.java @@ -20,8 +20,9 @@ import java.net.URL; -import org.eclipse.jetty.servlet.DefaultServlet; +import org.eclipse.jetty.ee9.servlet.DefaultServlet; import org.eclipse.jetty.util.resource.Resource; +import org.eclipse.jetty.util.resource.URLResourceFactory; /** * Very simple servlet class capable of serving static files. @@ -30,16 +31,16 @@ public class StaticServlet extends DefaultServlet { private static final long serialVersionUID = 1L; @Override - public Resource getResource(String pathInContext) { + protected Resource resolve(String subUriPath) { // Take only last slice of the URL as a filename, so we can adjust path. // This also prevents mischief like '../../foo.css' - String[] parts = pathInContext.split("/"); + String[] parts = subUriPath.split("/"); String filename = parts[parts.length - 1]; URL resource = getClass().getClassLoader().getResource("org/apache/avro/ipc/stats/static/" + filename); if (resource == null) { return null; } - return Resource.newResource(resource); + return new URLResourceFactory().newResource(resource); } } 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 43e066190d7..ecd39308855 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 @@ -20,8 +20,8 @@ * limitations under the License. */ import org.eclipse.jetty.server.Server; -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; /* This is a server that displays live information from a StatsPlugin. * @@ -42,11 +42,11 @@ public StatsServer(StatsPlugin plugin, int port) throws Exception { this.httpServer = new Server(port); this.plugin = plugin; - ServletHandler handler = new ServletHandler(); - httpServer.setHandler(handler); - handler.addServletWithMapping(new ServletHolder(new StaticServlet()), "/"); + ServletContextHandler sch = new ServletContextHandler(); + httpServer.setHandler(sch); + sch.getServletHandler().addServletWithMapping(new ServletHolder(new StaticServlet()), "/"); - handler.addServletWithMapping(new ServletHolder(new StatsServlet(plugin)), "/"); + sch.getServletHandler().addServletWithMapping(new ServletHolder(new StatsServlet(plugin)), "/"); 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 f75093364ff..3815dc628d2 100644 --- a/lang/java/pom.xml +++ b/lang/java/pom.xml @@ -46,7 +46,8 @@ 3.4.2 3.0 2.20.1 - 9.4.58.v20250814 + 12.1.4 + ee9 5.0.4 5.14.1 3.9.6 @@ -54,7 +55,7 @@ 4.2.7.Final 4.33.1 1.2.26 - 4.0.1 + 6.0.0 2.0.17 1.1.10.8 0.20.0 @@ -549,8 +550,8 @@ ${jetty.version} - org.eclipse.jetty - jetty-servlet + org.eclipse.jetty.${jetty.ee.version} + jetty-${jetty.ee.version}-servlet ${jetty.version} @@ -559,8 +560,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 77f3fc92014..6589099e014 100644 --- a/pom.xml +++ b/pom.xml @@ -225,7 +225,7 @@ - 11 + 17 test provided