File jetty9-to-jetty11-migration.patch of Package spark-core
Index: spark-core/src/main/java/spark/HaltException.java
===================================================================
--- spark-core.orig/src/main/java/spark/HaltException.java
+++ spark-core/src/main/java/spark/HaltException.java
@@ -16,7 +16,7 @@
*/
package spark;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
/**
* Exception used for stopping the execution
Index: spark-core/src/main/java/spark/QueryParamsMap.java
===================================================================
--- spark-core.orig/src/main/java/spark/QueryParamsMap.java
+++ spark-core/src/main/java/spark/QueryParamsMap.java
@@ -6,7 +6,7 @@ import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
/**
* These objects represent the parameters sent on a Http Request. <br>
Index: spark-core/src/main/java/spark/Request.java
===================================================================
--- spark-core.orig/src/main/java/spark/Request.java
+++ spark-core/src/main/java/spark/Request.java
@@ -28,9 +28,9 @@ import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
import spark.routematch.RouteMatch;
import spark.utils.IOUtils;
Index: spark-core/src/main/java/spark/RequestResponseFactory.java
===================================================================
--- spark-core.orig/src/main/java/spark/RequestResponseFactory.java
+++ spark-core/src/main/java/spark/RequestResponseFactory.java
@@ -16,8 +16,8 @@
*/
package spark;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import spark.routematch.RouteMatch;
Index: spark-core/src/main/java/spark/Response.java
===================================================================
--- spark-core.orig/src/main/java/spark/Response.java
+++ spark-core/src/main/java/spark/Response.java
@@ -19,8 +19,8 @@ package spark;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.Instant;
import java.util.Date;
Index: spark-core/src/main/java/spark/Session.java
===================================================================
--- spark-core.orig/src/main/java/spark/Session.java
+++ spark-core/src/main/java/spark/Session.java
@@ -4,7 +4,7 @@ import java.util.Enumeration;
import java.util.Set;
import java.util.TreeSet;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import spark.utils.Assert;
Index: spark-core/src/main/java/spark/embeddedserver/jetty/HttpRequestWrapper.java
===================================================================
--- spark-core.orig/src/main/java/spark/embeddedserver/jetty/HttpRequestWrapper.java
+++ spark-core/src/main/java/spark/embeddedserver/jetty/HttpRequestWrapper.java
@@ -19,10 +19,10 @@ package spark.embeddedserver.jetty;
import java.io.ByteArrayInputStream;
import java.io.IOException;
-import javax.servlet.ReadListener;
-import javax.servlet.ServletInputStream;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
+import jakarta.servlet.ReadListener;
+import jakarta.servlet.ServletInputStream;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequestWrapper;
import spark.utils.IOUtils;
Index: spark-core/src/main/java/spark/embeddedserver/jetty/JettyHandler.java
===================================================================
--- spark-core.orig/src/main/java/spark/embeddedserver/jetty/JettyHandler.java
+++ spark-core/src/main/java/spark/embeddedserver/jetty/JettyHandler.java
@@ -18,10 +18,10 @@ package spark.embeddedserver.jetty;
import java.io.IOException;
-import javax.servlet.Filter;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.Filter;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.session.SessionHandler;
Index: spark-core/src/main/java/spark/http/matching/Body.java
===================================================================
--- spark-core.orig/src/main/java/spark/http/matching/Body.java
+++ spark-core/src/main/java/spark/http/matching/Body.java
@@ -19,8 +19,8 @@ package spark.http.matching;
import java.io.IOException;
import java.io.OutputStream;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import spark.utils.GzipUtils;
import spark.serialization.SerializerChain;
Index: spark-core/src/main/java/spark/http/matching/GeneralError.java
===================================================================
--- spark-core.orig/src/main/java/spark/http/matching/GeneralError.java
+++ spark-core/src/main/java/spark/http/matching/GeneralError.java
@@ -16,8 +16,8 @@
*/
package spark.http.matching;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import spark.CustomErrorPages;
import spark.ExceptionHandlerImpl;
Index: spark-core/src/main/java/spark/http/matching/Halt.java
===================================================================
--- spark-core.orig/src/main/java/spark/http/matching/Halt.java
+++ spark-core/src/main/java/spark/http/matching/Halt.java
@@ -16,7 +16,7 @@
*/
package spark.http.matching;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import spark.HaltException;
Index: spark-core/src/main/java/spark/http/matching/MatcherFilter.java
===================================================================
--- spark-core.orig/src/main/java/spark/http/matching/MatcherFilter.java
+++ spark-core/src/main/java/spark/http/matching/MatcherFilter.java
@@ -18,14 +18,14 @@ package spark.http.matching;
import java.io.IOException;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-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.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import spark.CustomErrorPages;
import spark.ExceptionMapper;
Index: spark-core/src/main/java/spark/http/matching/RequestWrapper.java
===================================================================
--- spark-core.orig/src/main/java/spark/http/matching/RequestWrapper.java
+++ spark-core/src/main/java/spark/http/matching/RequestWrapper.java
@@ -19,7 +19,7 @@ package spark.http.matching;
import java.util.Map;
import java.util.Set;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import spark.Access;
import spark.QueryParamsMap;
Index: spark-core/src/main/java/spark/http/matching/ResponseWrapper.java
===================================================================
--- spark-core.orig/src/main/java/spark/http/matching/ResponseWrapper.java
+++ spark-core/src/main/java/spark/http/matching/ResponseWrapper.java
@@ -16,7 +16,7 @@
*/
package spark.http.matching;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import spark.Response;
Index: spark-core/src/main/java/spark/http/matching/RouteContext.java
===================================================================
--- spark-core.orig/src/main/java/spark/http/matching/RouteContext.java
+++ spark-core/src/main/java/spark/http/matching/RouteContext.java
@@ -16,7 +16,7 @@
*/
package spark.http.matching;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import spark.Response;
import spark.route.*;
Index: spark-core/src/main/java/spark/resource/AbstractResourceHandler.java
===================================================================
--- spark-core.orig/src/main/java/spark/resource/AbstractResourceHandler.java
+++ spark-core/src/main/java/spark/resource/AbstractResourceHandler.java
@@ -19,8 +19,8 @@ package spark.resource;
import java.net.MalformedURLException;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.http.HttpServletRequest;
/**
* Abstract class providing functionality for finding resources based on an Http Servlet request.
Index: spark-core/src/main/java/spark/servlet/FilterTools.java
===================================================================
--- spark-core.orig/src/main/java/spark/servlet/FilterTools.java
+++ spark-core/src/main/java/spark/servlet/FilterTools.java
@@ -16,8 +16,8 @@
*/
package spark.servlet;
-import javax.servlet.FilterConfig;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
Index: spark-core/src/main/java/spark/servlet/SparkFilter.java
===================================================================
--- spark-core.orig/src/main/java/spark/servlet/SparkFilter.java
+++ spark-core/src/main/java/spark/servlet/SparkFilter.java
@@ -18,15 +18,15 @@ package spark.servlet;
import java.io.IOException;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequestWrapper;
+import jakarta.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Index: spark-core/src/main/java/spark/staticfiles/StaticFilesConfiguration.java
===================================================================
--- spark-core.orig/src/main/java/spark/staticfiles/StaticFilesConfiguration.java
+++ spark-core/src/main/java/spark/staticfiles/StaticFilesConfiguration.java
@@ -25,8 +25,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Index: spark-core/src/main/java/spark/utils/GzipUtils.java
===================================================================
--- spark-core.orig/src/main/java/spark/utils/GzipUtils.java
+++ spark-core/src/main/java/spark/utils/GzipUtils.java
@@ -22,8 +22,8 @@ import java.util.Collections;
import java.util.function.Predicate;
import java.util.zip.GZIPOutputStream;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
/**
* GZIP utility class.
Index: spark-core/src/test/java/spark/RequestTest.java
===================================================================
--- spark-core.orig/src/test/java/spark/RequestTest.java
+++ spark-core/src/test/java/spark/RequestTest.java
@@ -6,9 +6,9 @@ import org.junit.Test;
import spark.routematch.RouteMatch;
import spark.util.SparkTestUtil;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
import java.util.*;
import static org.junit.Assert.*;
Index: spark-core/src/test/java/spark/ResponseTest.java
===================================================================
--- spark-core.orig/src/test/java/spark/ResponseTest.java
+++ spark-core/src/test/java/spark/ResponseTest.java
@@ -5,8 +5,8 @@ import org.junit.Test;
import org.mockito.ArgumentCaptor;
import org.powermock.reflect.Whitebox;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletResponse;
import java.util.Date;
import static org.junit.Assert.assertEquals;
Index: spark-core/src/test/java/spark/ServiceTest.java
===================================================================
--- spark-core.orig/src/test/java/spark/ServiceTest.java
+++ spark-core/src/test/java/spark/ServiceTest.java
@@ -1,6 +1,6 @@
package spark;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.eclipse.jetty.websocket.api.annotations.WebSocket;
import org.junit.Before;
Index: spark-core/src/test/java/spark/SessionTest.java
===================================================================
--- spark-core.orig/src/test/java/spark/SessionTest.java
+++ spark-core/src/test/java/spark/SessionTest.java
@@ -4,7 +4,7 @@ import org.junit.Before;
import org.junit.Test;
import org.powermock.reflect.Whitebox;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
Index: spark-core/src/test/java/spark/embeddedserver/jetty/websocket/WebSocketServletContextHandlerFactoryTest.java
===================================================================
--- spark-core.orig/src/test/java/spark/embeddedserver/jetty/websocket/WebSocketServletContextHandlerFactoryTest.java
+++ spark-core/src/test/java/spark/embeddedserver/jetty/websocket/WebSocketServletContextHandlerFactoryTest.java
@@ -8,7 +8,7 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletContext;
import org.eclipse.jetty.http.pathmap.MappedResource;
import org.eclipse.jetty.http.pathmap.PathSpec;
Index: spark-core/src/test/java/spark/servlet/FilterConfigWrapper.java
===================================================================
--- spark-core.orig/src/test/java/spark/servlet/FilterConfigWrapper.java
+++ spark-core/src/test/java/spark/servlet/FilterConfigWrapper.java
@@ -2,8 +2,8 @@ package spark.servlet;
import java.util.Enumeration;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletContext;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletContext;
public class FilterConfigWrapper implements FilterConfig {
@@ -16,7 +16,7 @@ public class FilterConfigWrapper impleme
/**
* @return
- * @see javax.servlet.FilterConfig#getFilterName()
+ * @see jakarta.servlet.FilterConfig#getFilterName()
*/
public String getFilterName() {
return delegate.getFilterName();
@@ -25,7 +25,7 @@ public class FilterConfigWrapper impleme
/**
* @param name
* @return
- * @see javax.servlet.FilterConfig#getInitParameter(java.lang.String)
+ * @see jakarta.servlet.FilterConfig#getInitParameter(java.lang.String)
*/
public String getInitParameter(String name) {
if (name.equals("applicationClass")) {
@@ -36,7 +36,7 @@ public class FilterConfigWrapper impleme
/**
* @return
- * @see javax.servlet.FilterConfig#getInitParameterNames()
+ * @see jakarta.servlet.FilterConfig#getInitParameterNames()
*/
public Enumeration<String> getInitParameterNames() {
return delegate.getInitParameterNames();
@@ -44,7 +44,7 @@ public class FilterConfigWrapper impleme
/**
* @return
- * @see javax.servlet.FilterConfig#getServletContext()
+ * @see jakarta.servlet.FilterConfig#getServletContext()
*/
public ServletContext getServletContext() {
return delegate.getServletContext();
Index: spark-core/pom.xml
===================================================================
--- spark-core.orig/pom.xml
+++ spark-core/pom.xml
@@ -29,8 +29,8 @@
</developers>
<properties>
- <java.version>1.8</java.version>
- <jetty.version>9.4.31.v20200723</jetty.version>
+ <java.version>11</java.version>
+ <jetty.version>11.0.26</jetty.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<powermock.version>1.7.4</powermock.version>
<mockito.version>1.10.19</mockito.version>
@@ -66,7 +66,7 @@
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
- <artifactId>websocket-server</artifactId>
+ <artifactId>websocket-jetty-server</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
@@ -75,6 +75,17 @@
<version>${jetty.version}</version>
</dependency>
+ <dependency>
+ <groupId>jakarta.servlet</groupId>
+ <artifactId>jakarta.servlet-api</artifactId>
+ <version>6.1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>jakarta.websocket</groupId>
+ <artifactId>jakarta.websocket-client-api</artifactId>
+ <version>2.2.0</version>
+ </dependency>
+
<!-- JUNIT DEPENDENCY FOR TESTING -->
<dependency>
<groupId>junit</groupId>
@@ -120,7 +131,7 @@
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
- <artifactId>websocket-client</artifactId>
+ <artifactId>websocket-jetty-client</artifactId>
<version>${jetty.version}</version>
<scope>test</scope>
</dependency>
Index: spark-core/src/main/java/spark/embeddedserver/jetty/websocket/WebSocketCreatorFactory.java
===================================================================
--- spark-core.orig/src/main/java/spark/embeddedserver/jetty/websocket/WebSocketCreatorFactory.java
+++ spark-core/src/main/java/spark/embeddedserver/jetty/websocket/WebSocketCreatorFactory.java
@@ -15,14 +15,14 @@
*/
package spark.embeddedserver.jetty.websocket;
-import org.eclipse.jetty.websocket.servlet.ServletUpgradeRequest;
-import org.eclipse.jetty.websocket.servlet.ServletUpgradeResponse;
-import org.eclipse.jetty.websocket.servlet.WebSocketCreator;
+import org.eclipse.jetty.websocket.server.JettyServerUpgradeRequest;
+import org.eclipse.jetty.websocket.server.JettyServerUpgradeResponse;
+import org.eclipse.jetty.websocket.server.JettyWebSocketCreator;
import static java.util.Objects.requireNonNull;
/**
- * Factory class to create {@link WebSocketCreator} implementations that
+ * Factory class to create {@link JettyWebSocketCreator} implementations that
* delegate to the given handler class.
*
* @author Ignasi Barrera
@@ -30,18 +30,18 @@ import static java.util.Objects.requireN
public class WebSocketCreatorFactory {
/**
- * Creates a {@link WebSocketCreator} that uses the given handler class/instance for
+ * Creates a {@link JettyWebSocketCreator} that uses the given handler class/instance for
* the WebSocket connections.
*
* @param handlerWrapper The wrapped handler to use to manage WebSocket connections.
- * @return The WebSocketCreator.
+ * @return The JettyWebSocketCreator.
*/
- public static WebSocketCreator create(WebSocketHandlerWrapper handlerWrapper) {
+ public static JettyWebSocketCreator create(WebSocketHandlerWrapper handlerWrapper) {
return new SparkWebSocketCreator(handlerWrapper.getHandler());
}
// Package protected to be visible to the unit tests
- static class SparkWebSocketCreator implements WebSocketCreator {
+ static class SparkWebSocketCreator implements JettyWebSocketCreator {
private final Object handler;
private SparkWebSocketCreator(Object handler) {
@@ -49,8 +49,8 @@ public class WebSocketCreatorFactory {
}
@Override
- public Object createWebSocket(ServletUpgradeRequest request,
- ServletUpgradeResponse response) {
+ public Object createWebSocket(JettyServerUpgradeRequest request,
+ JettyServerUpgradeResponse response) {
return handler;
}
Index: spark-core/src/main/java/spark/embeddedserver/jetty/websocket/WebSocketServletContextHandlerFactory.java
===================================================================
--- spark-core.orig/src/main/java/spark/embeddedserver/jetty/websocket/WebSocketServletContextHandlerFactory.java
+++ spark-core/src/main/java/spark/embeddedserver/jetty/websocket/WebSocketServletContextHandlerFactory.java
@@ -16,14 +16,12 @@
*/
package spark.embeddedserver.jetty.websocket;
+import java.time.Duration;
import java.util.Map;
import java.util.Optional;
-import org.eclipse.jetty.http.pathmap.ServletPathSpec;
import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.websocket.server.NativeWebSocketConfiguration;
-import org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter;
-import org.eclipse.jetty.websocket.servlet.WebSocketCreator;
+import org.eclipse.jetty.websocket.server.config.JettyWebSocketServletContainerInitializer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -44,22 +42,28 @@ public class WebSocketServletContextHand
public static ServletContextHandler create(Map<String, WebSocketHandlerWrapper> webSocketHandlers,
Optional<Integer> webSocketIdleTimeoutMillis) {
ServletContextHandler webSocketServletContextHandler = null;
- if (webSocketHandlers != null) {
+ if (webSocketHandlers != null && !webSocketHandlers.isEmpty()) {
try {
webSocketServletContextHandler = new ServletContextHandler(null, "/", true, false);
- WebSocketUpgradeFilter webSocketUpgradeFilter = WebSocketUpgradeFilter.configureContext(webSocketServletContextHandler);
- if (webSocketIdleTimeoutMillis.isPresent()) {
- webSocketUpgradeFilter.getFactory().getPolicy().setIdleTimeout(webSocketIdleTimeoutMillis.get());
- }
- // Since we are configuring WebSockets before the ServletContextHandler and WebSocketUpgradeFilter is
- // even initialized / started, then we have to pre-populate the configuration that will eventually
- // be used by Jetty's WebSocketUpgradeFilter.
- NativeWebSocketConfiguration webSocketConfiguration = (NativeWebSocketConfiguration) webSocketServletContextHandler
- .getServletContext().getAttribute(NativeWebSocketConfiguration.class.getName());
- for (String path : webSocketHandlers.keySet()) {
- WebSocketCreator webSocketCreator = WebSocketCreatorFactory.create(webSocketHandlers.get(path));
- webSocketConfiguration.addMapping(new ServletPathSpec(path), webSocketCreator);
- }
+
+ // Configure Jetty WebSocket support
+ JettyWebSocketServletContainerInitializer.configure(webSocketServletContextHandler,
+ (servletContext, wsContainer) -> {
+ // Configure idle timeout if specified
+ if (webSocketIdleTimeoutMillis.isPresent()) {
+ wsContainer.setIdleTimeout(Duration.ofMillis(webSocketIdleTimeoutMillis.get()));
+ }
+
+ // Register WebSocket endpoints
+ for (Map.Entry<String, WebSocketHandlerWrapper> entry : webSocketHandlers.entrySet()) {
+ String path = entry.getKey();
+ WebSocketHandlerWrapper handler = entry.getValue();
+
+ // Add mapping for each WebSocket path
+ wsContainer.addMapping(path, (request, response) -> handler.getHandler());
+ }
+ });
+
} catch (Exception ex) {
logger.error("creation of websocket context handler failed.", ex);
webSocketServletContextHandler = null;