This is an automated email from the ASF dual-hosted git repository.

reta pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cxf.git


The following commit(s) were added to refs/heads/main by this push:
     new 8abb11abab CXF-8717: Migration path for Jetty 11 (#997)
8abb11abab is described below

commit 8abb11abab186d2a76fafb41ab610f3c292d5fa8
Author: Andriy Redko <[email protected]>
AuthorDate: Thu Oct 6 21:32:05 2022 -0400

    CXF-8717: Migration path for Jetty 11 (#997)
---
 distribution/javadoc/pom.xml                       | 19 ++---
 .../cxf/transport/http_jetty/JettyHTTPHandler.java |  5 ++
 .../http_jetty/JettyHTTPServerEngine.java          |  2 +-
 rt/transports/pom.xml                              | 12 +--
 rt/transports/websocket/pom.xml                    |  5 ++
 .../websocket/WebSocketDestinationFactory.java     |  8 +-
 .../websocket/jetty/JettyWebSocketHandler.java     | 52 ------------
 .../Jetty11WebSocketDestination.java}              | 97 +++++++++-------------
 .../{jetty9 => jetty11}/JettyWebSocketHandler.java | 24 ++++--
 .../jetty/JettyWebSocketDestinationTest.java       |  5 +-
 .../jaxrs/servlet/jetty/AbstractJettyServer.java   |  2 +
 11 files changed, 82 insertions(+), 149 deletions(-)

diff --git a/distribution/javadoc/pom.xml b/distribution/javadoc/pom.xml
index a9041e5711..b354e591cd 100644
--- a/distribution/javadoc/pom.xml
+++ b/distribution/javadoc/pom.xml
@@ -145,6 +145,11 @@
             <artifactId>cxf-rt-ws-transfer</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-transports-websocket</artifactId>
+            <version>${project.version}</version>
+        </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-text</artifactId>
@@ -712,18 +717,4 @@
             </plugins>
         </pluginManagement>
     </build>
-    <profiles>
-        <!-- TODO: This profile includes modules which are still on 'javax.*' 
namespace and
-        are not migrated to Jakarta -->
-        <profile>
-            <id>javax</id>
-            <dependencies>
-                <dependency>
-                    <groupId>org.apache.cxf</groupId>
-                    <artifactId>cxf-rt-transports-websocket</artifactId>
-                    <version>${project.version}</version>
-                </dependency>
-            </dependencies>
-        </profile>
-    </profiles>
 </project>
diff --git 
a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPHandler.java
 
b/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPHandler.java
index 8e4f7a55dd..e4f54d08e0 100644
--- 
a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPHandler.java
+++ 
b/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPHandler.java
@@ -28,6 +28,7 @@ import org.apache.cxf.Bus;
 import org.apache.cxf.transport.http.HttpUrlUtil;
 import org.eclipse.jetty.server.Request;
 import org.eclipse.jetty.server.handler.AbstractHandler;
+import org.eclipse.jetty.server.handler.ContextHandler;
 
 public class JettyHTTPHandler extends AbstractHandler {
     private static final String METHOD_TRACE = "TRACE";
@@ -81,6 +82,10 @@ public class JettyHTTPHandler extends AbstractHandler {
         }
 
     }
+    
+    public ContextHandler createContextHandler() {
+        return new ContextHandler();
+    }
 
     public Bus getBus() {
         return jettyHTTPDestination != null ? jettyHTTPDestination.getBus() : 
bus;
diff --git 
a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java
 
b/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java
index a184d56b2c..be513a6838 100644
--- 
a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java
+++ 
b/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngine.java
@@ -490,7 +490,7 @@ public class JettyHTTPServerEngine implements ServerEngine, 
HttpServerEngineSupp
         }
 
         String contextName = HttpUriMapper.getContextName(url.getPath());
-        ContextHandler context = new ContextHandler();
+        ContextHandler context = handler.createContextHandler();
         context.setContextPath(contextName);
         // bind the jetty http handler with the context handler
         if (isSessionSupport) {
diff --git a/rt/transports/pom.xml b/rt/transports/pom.xml
index 615dc72e01..58deb3efd2 100644
--- a/rt/transports/pom.xml
+++ b/rt/transports/pom.xml
@@ -40,16 +40,6 @@
         <module>http-netty/netty-client</module>
         <module>udp</module>
         <module>jms</module>
+        <module>websocket</module>
     </modules>
-    
-    <profiles>
-        <!-- TODO: This profile includes modules which are still on 'javax.*' 
namespace and
-        are not migrated to Jakarta -->
-        <profile>
-            <id>javax</id>
-            <modules>
-                <module>websocket</module>
-            </modules>
-        </profile>
-    </profiles>
 </project>
diff --git a/rt/transports/websocket/pom.xml b/rt/transports/websocket/pom.xml
index b57f19c1c7..c6a44b4a27 100644
--- a/rt/transports/websocket/pom.xml
+++ b/rt/transports/websocket/pom.xml
@@ -131,6 +131,11 @@
             <artifactId>jetty-http</artifactId>
             <optional>true</optional>
         </dependency>
+        <dependency>
+            <groupId>org.eclipse.jetty.websocket</groupId>
+            <artifactId>websocket-jetty-server</artifactId>
+            <version>${cxf.jetty11.version}</version>
+        </dependency>
         <dependency>
             <groupId>org.eclipse.jetty.websocket</groupId>
             <artifactId>websocket-jakarta-server</artifactId>
diff --git 
a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/WebSocketDestinationFactory.java
 
b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/WebSocketDestinationFactory.java
index 05a059a4a5..4126f0d4ad 100644
--- 
a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/WebSocketDestinationFactory.java
+++ 
b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/WebSocketDestinationFactory.java
@@ -43,8 +43,8 @@ public class WebSocketDestinationFactory implements 
HttpDestinationFactory {
         
probeClass("org.apache.cxf.transport.http_jetty.JettyHTTPServerEngineFactory");
     private static final boolean UNDERTOW_AVAILABLE = 
         
probeClass("org.apache.cxf.transport.http_undertow.UndertowHTTPServerEngineFactory");
-    private static final Constructor<?> JETTY9_WEBSOCKET_DESTINATION_CTR =
-        
probeConstructor("org.apache.cxf.transport.websocket.jetty9.Jetty9WebSocketDestination");
+    private static final Constructor<?> JETTY11_WEBSOCKET_DESTINATION_CTR =
+        
probeConstructor("org.apache.cxf.transport.websocket.jetty11.Jetty11WebSocketDestination");
     private static final Constructor<?> UNDERTOW_WEBSOCKET_DESTINATION_CTR =
         
probeUndertowConstructor("org.apache.cxf.transport.websocket.undertow.UndertowWebSocketDestination");
     private static final Constructor<?> 
ATMOSPHERE_WEBSOCKET_JETTY_DESTINATION_CTR =
@@ -110,7 +110,7 @@ public class WebSocketDestinationFactory implements 
HttpDestinationFactory {
             // for the embedded mode, we stick to jetty if jetty is available
                 JettyHTTPServerEngineFactory serverEngineFactory = bus
                     .getExtension(JettyHTTPServerEngineFactory.class);
-                return 
createJettyHTTPDestination(JETTY9_WEBSOCKET_DESTINATION_CTR, bus, registry,
+                return 
createJettyHTTPDestination(JETTY11_WEBSOCKET_DESTINATION_CTR, bus, registry,
                                               endpointInfo, 
serverEngineFactory);
             } else if (UNDERTOW_AVAILABLE) {
                 // use UndertowWebSocketDestination
@@ -132,7 +132,7 @@ public class WebSocketDestinationFactory implements 
HttpDestinationFactory {
                                                              
endpointInfo.getAddress());
         }
         // use jetty-websocket
-        return createJettyHTTPDestination(JETTY9_WEBSOCKET_DESTINATION_CTR, 
bus, registry,
+        return createJettyHTTPDestination(JETTY11_WEBSOCKET_DESTINATION_CTR, 
bus, registry,
                                           endpointInfo, null);
     }
 
diff --git 
a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketHandler.java
 
b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketHandler.java
deleted file mode 100644
index 66bbb4c3ed..0000000000
--- 
a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketHandler.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.cxf.transport.websocket.jetty;
-
-import java.io.IOException;
-
-import jakarta.servlet.ServletException;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
-import org.apache.cxf.transport.http_jetty.JettyHTTPDestination;
-import org.apache.cxf.transport.http_jetty.JettyHTTPHandler;
-import org.eclipse.jetty.server.Request;
-import org.eclipse.jetty.websocket.server.WebSocketServerFactory;
-
-/**
- * The extended version of JettyHTTPHandler that can support websocket.
- */
-class JettyWebSocketHandler extends JettyHTTPHandler {
-    private WebSocketServerFactory webSocketFactory;
-
-    JettyWebSocketHandler(JettyHTTPDestination jhd, boolean cmExact,
-                          WebSocketServerFactory webSocketFactory) {
-        super(jhd, cmExact);
-        this.webSocketFactory = webSocketFactory;
-    }
-
-    @Override
-    public void handle(String target, Request baseRequest, HttpServletRequest 
request,
-                       HttpServletResponse response) throws IOException, 
ServletException {
-        if (webSocketFactory.acceptWebSocket(request, response)) {
-            baseRequest.setHandled(true);
-        } else {
-            super.handle(target, baseRequest, request, response);
-        }
-    }
-}
diff --git 
a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty9/Jetty9WebSocketDestination.java
 
b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty11/Jetty11WebSocketDestination.java
similarity index 79%
rename from 
rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty9/Jetty9WebSocketDestination.java
rename to 
rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty11/Jetty11WebSocketDestination.java
index 86b4e2b737..37a63b3631 100644
--- 
a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty9/Jetty9WebSocketDestination.java
+++ 
b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty11/Jetty11WebSocketDestination.java
@@ -17,17 +17,17 @@
  * under the License.
  */
 
-package org.apache.cxf.transport.websocket.jetty9;
+package org.apache.cxf.transport.websocket.jetty11;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
+import java.net.InetSocketAddress;
 import java.net.URL;
 import java.nio.ByteBuffer;
 import java.security.Principal;
 import java.util.Enumeration;
 import java.util.Locale;
-import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import java.util.concurrent.RejectedExecutionException;
 import java.util.logging.Level;
@@ -57,30 +57,28 @@ import org.eclipse.jetty.server.Request;
 import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.server.handler.ContextHandler;
 import org.eclipse.jetty.websocket.api.Session;
+import org.eclipse.jetty.websocket.api.UpgradeRequest;
 import org.eclipse.jetty.websocket.api.WebSocketAdapter;
-import org.eclipse.jetty.websocket.server.WebSocketHandler;
-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.servlet.WebSocketServletFactory;
+import org.eclipse.jetty.websocket.server.JettyServerUpgradeRequest;
+import org.eclipse.jetty.websocket.server.JettyServerUpgradeResponse;
+import org.eclipse.jetty.websocket.server.JettyWebSocketCreator;
+import org.eclipse.jetty.websocket.server.JettyWebSocketServerContainer;
 
 /**
  *
  */
-public class Jetty9WebSocketDestination extends JettyHTTPDestination implements
+public class Jetty11WebSocketDestination extends JettyHTTPDestination 
implements
     WebSocketDestinationService {
-    private static final Logger LOG = 
LogUtils.getL7dLogger(Jetty9WebSocketDestination.class);
+    private static final Logger LOG = 
LogUtils.getL7dLogger(Jetty11WebSocketDestination.class);
 
     //REVISIT make these keys configurable
     private static final String REQUEST_ID_KEY = 
WebSocketConstants.DEFAULT_REQUEST_ID_KEY;
     private static final String RESPONSE_ID_KEY = 
WebSocketConstants.DEFAULT_RESPONSE_ID_KEY;
 
     private final Executor executor;
+    private JettyWebSocketServerContainer webSocketServerContainer;
 
-    private WebSocketHandler webSockethandler;
-    private WebSocketServletFactory webSocketFactory;
-
-    public Jetty9WebSocketDestination(Bus bus, DestinationRegistry registry, 
EndpointInfo ei,
+    public Jetty11WebSocketDestination(Bus bus, DestinationRegistry registry, 
EndpointInfo ei,
                                      JettyHTTPServerEngineFactory 
serverEngineFactory) throws IOException {
         super(bus, registry, ei,
               serverEngineFactory == null ? null : new 
URL(getNonWSAddress(ei)),
@@ -98,10 +96,10 @@ public class Jetty9WebSocketDestination extends 
JettyHTTPDestination implements
                        final HttpServletRequest request,
                        final HttpServletResponse response) throws IOException {
 
-        WebSocketServletFactory wsf = getWebSocketFactory(config, context);
+        JettyWebSocketServerContainer wssc = getWebSocketContainer(context);
+        JettyWebSocketCreator creator = getCreator();
 
-        if (wsf.isUpgradeRequest(request, response)
-            && wsf.acceptWebSocket(request, response)) {
+        if (wssc.upgrade(creator, request, response)) {
             ((Request)request).setHandled(true);
             return;
         }
@@ -125,32 +123,20 @@ public class Jetty9WebSocketDestination extends 
JettyHTTPDestination implements
         ContextHandler h = c.getContextHandler();
         return h.getServer();
     }
-
-    private WebSocketServletFactory getWebSocketFactory(ServletConfig config, 
ServletContext context) {
-        if (webSocketFactory == null) {
-            Server server = getServer(config, context);
-            return getWebSocketFactory(server);
-        }
-        return webSocketFactory;
+    
+    public JettyWebSocketCreator getCreator() {
+        return new Creator();
     }
 
-    public synchronized WebSocketServletFactory getWebSocketFactory(Server 
server) {
-        if (webSocketFactory == null) {
-            webSockethandler = new WebSocketHandler() {
-                @Override
-                public void configure(WebSocketServletFactory factory) {
-                }
-            };
-            try {
-                webSockethandler.setServer(server);
-                webSockethandler.start();
-            } catch (Exception e) {
-                e.printStackTrace();
+    public synchronized JettyWebSocketServerContainer 
getWebSocketContainer(ServletContext context) {
+        if (webSocketServerContainer == null) {
+            webSocketServerContainer = 
JettyWebSocketServerContainer.getContainer(context);
+            if (webSocketServerContainer == null) {
+                webSocketServerContainer = 
JettyWebSocketServerContainer.ensureContainer(context);
             }
-            webSocketFactory = webSockethandler.getWebSocketFactory();
-            webSocketFactory.setCreator(new Creator());
+            return webSocketServerContainer;
         }
-        return webSocketFactory;
+        return webSocketServerContainer;
     }
 
     @Override
@@ -160,11 +146,6 @@ public class Jetty9WebSocketDestination extends 
JettyHTTPDestination implements
 
     @Override
     public void shutdown() {
-        try {
-            webSockethandler.stop();
-        } catch (Exception e) {
-            //nothing needed
-        }
         super.shutdown();
     }
 
@@ -178,7 +159,7 @@ public class Jetty9WebSocketDestination extends 
JettyHTTPDestination implements
             public void run() {
                 HttpServletResponse response = null;
                 try {
-                    WebSocketServletHolder holder = new 
Jetty9WebSocketHolder(session);
+                    WebSocketServletHolder holder = new 
Jetty11WebSocketHolder(session);
                     response = createServletResponse(holder);
                     HttpServletRequest request = createServletRequest(data, 
offset, length, holder, session);
                     String reqid = request.getHeader(REQUEST_ID_KEY);
@@ -232,10 +213,10 @@ public class Jetty9WebSocketDestination extends 
JettyHTTPDestination implements
     }
 
     // hide this jetty9 interface here to avoid CNFE on WebSocketCreator
-    private class Creator implements WebSocketCreator {
+    private class Creator implements JettyWebSocketCreator {
 
         @Override
-        public Object createWebSocket(ServletUpgradeRequest req, 
ServletUpgradeResponse resp) {
+        public Object createWebSocket(JettyServerUpgradeRequest req, 
JettyServerUpgradeResponse resp) {
             return new WebSocketAdapter() {
                 Session session;
                 @Override
@@ -262,16 +243,16 @@ public class Jetty9WebSocketDestination extends 
JettyHTTPDestination implements
 
     }
 
-    class Jetty9WebSocketHolder implements WebSocketServletHolder {
+    class Jetty11WebSocketHolder implements WebSocketServletHolder {
         final Session session;
-        Jetty9WebSocketHolder(Session s) {
+        Jetty11WebSocketHolder(Session s) {
             session = s;
         }
         public String getAuthType() {
             return null;
         }
         public String getContextPath() {
-            return 
((ServletUpgradeRequest)session.getUpgradeRequest()).getHttpServletRequest().getContextPath();
+            return 
getHttpServletRequest(session.getUpgradeRequest()).getContextPath();
         }
         public String getLocalAddr() {
             return null;
@@ -331,21 +312,25 @@ public class Jetty9WebSocketDestination extends 
JettyHTTPDestination implements
             return null;
         }
         public int getServerPort() {
-            return session.getLocalAddress().getPort();
+            return ((InetSocketAddress)session.getLocalAddress()).getPort();
         }
         public Principal getUserPrincipal() {
             return null;
         }
         public Object getAttribute(String name) {
-            return 
((ServletUpgradeRequest)session.getUpgradeRequest()).getHttpServletRequest().getAttribute(name);
+            final UpgradeRequest upgradeRequest = session.getUpgradeRequest();
+            return getHttpServletRequest(upgradeRequest).getAttribute(name);
         }
         @Override
         public void write(byte[] data, int offset, int length) throws 
IOException {
-            try {
-                session.getRemote().sendBytesByFuture(ByteBuffer.wrap(data,  
offset, length)).get();
-            } catch (InterruptedException | ExecutionException e) {
-                // TODO Auto-generated catch block
-                e.printStackTrace();
+            session.getRemote().sendBytes(ByteBuffer.wrap(data,  offset, 
length));
+        }
+        
+        private HttpServletRequest getHttpServletRequest(final UpgradeRequest 
upgradeRequest) {
+            if (upgradeRequest instanceof JettyServerUpgradeRequest) {
+                return 
((JettyServerUpgradeRequest)upgradeRequest).getHttpServletRequest();
+            } else {
+                throw new IllegalStateException("Unsupported upgrade request 
class: " + upgradeRequest.getClass());
             }
         }
     }
diff --git 
a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty9/JettyWebSocketHandler.java
 
b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty11/JettyWebSocketHandler.java
similarity index 66%
rename from 
rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty9/JettyWebSocketHandler.java
rename to 
rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty11/JettyWebSocketHandler.java
index f08e3ea6a1..a2d6c9f4a2 100644
--- 
a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty9/JettyWebSocketHandler.java
+++ 
b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty11/JettyWebSocketHandler.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.cxf.transport.websocket.jetty9;
+package org.apache.cxf.transport.websocket.jetty11;
 
 import java.io.IOException;
 
@@ -26,24 +26,27 @@ import jakarta.servlet.http.HttpServletResponse;
 import org.apache.cxf.transport.http_jetty.JettyHTTPDestination;
 import org.apache.cxf.transport.http_jetty.JettyHTTPHandler;
 import org.eclipse.jetty.server.Request;
-import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
+import org.eclipse.jetty.server.handler.ContextHandler;
+import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.websocket.server.JettyWebSocketServerContainer;
+import 
org.eclipse.jetty.websocket.server.config.JettyWebSocketServletContainerInitializer;
 
 /**
  * The extended version of JettyHTTPHandler that can support websocket.
  */
 class JettyWebSocketHandler extends JettyHTTPHandler {
-    final Jetty9WebSocketDestination webSocketDestination;
-    WebSocketServletFactory webSocketFactory;
+    final Jetty11WebSocketDestination webSocketDestination;
+    JettyWebSocketServerContainer webSocketContainer;
 
     JettyWebSocketHandler(JettyHTTPDestination jhd, boolean cmExact,
-                          Jetty9WebSocketDestination wsd) {
+                          Jetty11WebSocketDestination wsd) {
         super(jhd, cmExact);
         this.webSocketDestination = wsd;
     }
     
     @Override
     public void doStart() throws Exception {
-        webSocketFactory = 
webSocketDestination.getWebSocketFactory(this.getServer());
+        webSocketContainer = 
webSocketDestination.getWebSocketContainer(getServletContext());
         super.doStart();
     }
 
@@ -54,12 +57,17 @@ class JettyWebSocketHandler extends JettyHTTPHandler {
                        HttpServletResponse response)
         throws IOException, ServletException {
 
-        if (webSocketFactory.isUpgradeRequest(request, response)
-            && webSocketFactory.acceptWebSocket(request, response)) {
+        if (webSocketContainer.upgrade(webSocketDestination.getCreator(), 
request, response)) {
             baseRequest.setHandled(true);
             return;
         }
         super.handle(target, baseRequest, request, response);
     }
 
+    @Override
+    public ContextHandler createContextHandler() {
+        final ServletContextHandler handler = new ServletContextHandler();
+        JettyWebSocketServletContainerInitializer.configure(handler, null);
+        return handler;
+    }
 }
diff --git 
a/rt/transports/websocket/src/test/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketDestinationTest.java
 
b/rt/transports/websocket/src/test/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketDestinationTest.java
index 711d7d7253..b04bc323ba 100644
--- 
a/rt/transports/websocket/src/test/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketDestinationTest.java
+++ 
b/rt/transports/websocket/src/test/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketDestinationTest.java
@@ -30,8 +30,7 @@ import org.apache.cxf.transport.http.DestinationRegistry;
 import org.apache.cxf.transport.http.HTTPTransportFactory;
 import org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine;
 import org.apache.cxf.transport.http_jetty.JettyHTTPServerEngineFactory;
-import org.apache.cxf.transport.websocket.jetty9.Jetty9WebSocketDestination;
-
+import org.apache.cxf.transport.websocket.jetty11.Jetty11WebSocketDestination;
 import org.easymock.EasyMock;
 import org.easymock.IMocksControl;
 import org.junit.Before;
@@ -76,7 +75,7 @@ public class JettyWebSocketDestinationTest {
         assertNull(registry.getDestinationForPath(ENDPOINT_ADDRESS));
     }
 
-    private static class TestJettyWebSocketDestination extends 
Jetty9WebSocketDestination {
+    private static class TestJettyWebSocketDestination extends 
Jetty11WebSocketDestination {
         TestJettyWebSocketDestination(Bus bus, DestinationRegistry registry, 
EndpointInfo ei,
                                       JettyHTTPServerEngineFactory 
serverEngineFactory,
                                       JettyHTTPServerEngine engine) throws 
IOException {
diff --git 
a/systests/rs-http-sci/src/test/java/org/apache/cxf/jaxrs/servlet/jetty/AbstractJettyServer.java
 
b/systests/rs-http-sci/src/test/java/org/apache/cxf/jaxrs/servlet/jetty/AbstractJettyServer.java
index a739ab7222..0b50353f13 100644
--- 
a/systests/rs-http-sci/src/test/java/org/apache/cxf/jaxrs/servlet/jetty/AbstractJettyServer.java
+++ 
b/systests/rs-http-sci/src/test/java/org/apache/cxf/jaxrs/servlet/jetty/AbstractJettyServer.java
@@ -24,6 +24,7 @@ import org.eclipse.jetty.annotations.AnnotationConfiguration;
 import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.util.resource.Resource;
 import org.eclipse.jetty.webapp.Configuration;
+import org.eclipse.jetty.webapp.WebAppConfiguration;
 import org.eclipse.jetty.webapp.WebAppContext;
 import org.eclipse.jetty.webapp.WebXmlConfiguration;
 
@@ -50,6 +51,7 @@ public abstract class AbstractJettyServer extends 
AbstractBusTestServerBase {
             
context.setClassLoader(Thread.currentThread().getContextClassLoader());
             context.setConfigurations(new Configuration[] {
                 new WebXmlConfiguration(),
+                new WebAppConfiguration(),
                 new AnnotationConfiguration()
             });
 

Reply via email to