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.

Reply via email to