This is an automated email from the ASF dual-hosted git repository. bonampak pushed a commit to branch feature/jakarta-jetty-upgrade in repository https://gitbox.apache.org/repos/asf/knox.git
commit afabd1fee8844435e5e73c89a04a1628ff64a46a Author: bonampak <[email protected]> AuthorDate: Thu Apr 23 22:53:00 2026 +0200 KNOX-3238: fix Jetty handler chain. --- .../org/apache/knox/gateway/GatewayServer.java | 29 ++++++++++------------ 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/GatewayServer.java b/gateway-server/src/main/java/org/apache/knox/gateway/GatewayServer.java index 1d46ad5e5..85240f2bf 100644 --- a/gateway-server/src/main/java/org/apache/knox/gateway/GatewayServer.java +++ b/gateway-server/src/main/java/org/apache/knox/gateway/GatewayServer.java @@ -73,7 +73,6 @@ import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.SslConnectionFactory; import org.eclipse.jetty.server.handler.ContextHandlerCollection; import org.eclipse.jetty.server.handler.ErrorHandler; -import org.eclipse.jetty.server.handler.HandlerCollection; import org.eclipse.jetty.util.Callback; import org.eclipse.jetty.util.ssl.SslContextFactory; import org.eclipse.jetty.util.thread.QueuedThreadPool; @@ -527,7 +526,7 @@ public class GatewayServer { return connectors; } - private static HandlerCollection createHandlers( + private static Handler createHandlers( final GatewayConfig config, final GatewayServices services, final ContextHandlerCollection contexts, @@ -541,8 +540,6 @@ public class GatewayServer { .put(((WebAppContext) h).getContextPath(), h)); } - HandlerCollection handlers = new HandlerCollection(); - TraceHandler traceHandler = new TraceHandler(); traceHandler.setHandler( contexts ); traceHandler.setTracedBodyFilter( System.getProperty( "org.apache.knox.gateway.trace.body.status.filter" ) ); @@ -586,24 +583,24 @@ public class GatewayServer { }); } - if(config.isStrictTransportEnabled()) { - final String strictTransportOption = config.getStrictTransportOption(); - handlers.addHandler(new HSTSHandler(strictTransportOption)); - log.strictTransportHeaderEnabled(strictTransportOption); - } - + Handler rootHandler = portMappingHandler; if (config.isWebsocketEnabled()) { final GatewayWebsocketHandler websocketHandler = new GatewayWebsocketHandler( config, services); websocketHandler.setHandler(portMappingHandler); + rootHandler = websocketHandler; + } - handlers.addHandler(websocketHandler); - - } else { - handlers.addHandler(portMappingHandler); + if(config.isStrictTransportEnabled()) { + final String strictTransportOption = config.getStrictTransportOption(); + HSTSHandler hstsHandler = new HSTSHandler(strictTransportOption); + hstsHandler.setHandler(rootHandler); + rootHandler = hstsHandler; + log.strictTransportHeaderEnabled(strictTransportOption); } - return handlers; + + return rootHandler; } /** @@ -718,7 +715,7 @@ public class GatewayServer { // log WARN message and continue checkMappedTopologiesExist(topologyPortMap, deployedTopologyList); - final HandlerCollection handlers = createHandlers( config, services, contexts, topologyPortMap); + final Handler handlers = createHandlers( config, services, contexts, topologyPortMap); // Check whether a topology wants dedicated port, // if yes then we create a connector that listens on the provided port.
