2017-03-01 4 views
0

Mon serveur Web actuel est embarqué Jetty 9.1.5. Cela fonctionne bien avec JSR-356 pour créer websocket. Ces jours-ci, j'essaie de passer à Jetty 9.4.1. Tout fonctionne bien sauf websocket.
Mon code comme ci-dessous:Websocket JSR-356 échouer avec Jetty 9.4.1

  1. jetée Embarqués et Websocket libs:
<dependency> 
    <groupId>org.eclipse.jetty</groupId> 
    <artifactId>jetty-server</artifactId> 
    <version>9.4.1.v20170120</version> 
</dependency> 
<dependency> 
    <groupId>org.eclipse.jetty</groupId> 
    <artifactId>jetty-webapp</artifactId> 
    <version>9.4.1.v20170120</version> 
</dependency> 
<dependency> 
    <groupId>org.eclipse.jetty</groupId> 
    <artifactId>jetty-annotations</artifactId> 
    <version>9.4.1.v20170120</version> 
</dependency> 
<dependency> 
    <groupId>org.eclipse.jetty.websocket</groupId> 
    <artifactId>javax-websocket-server-impl</artifactId> 
    <version>9.4.1.v20170120</version> 
</dependency> 
    point final
  1. Server:
@ServerEndpoint(value = "/ws/communication/{officeId}/{username}/{oldWSSession}") 
    class WSCommunication { 
    // @OnOpen, @OnMessage, @OnClose methods 
    } 
  1. serveur Jetty, le contexte Webapp, configuration Websocket:

    // Jetty server 
        Server server = new Server(); 
        String[] configFiles = {"./etc/jetty.xml"}; 
        for (String configFile : configFiles) { 
        XmlConfiguration configuration = new XmlConfiguration(new File(configFile).toURI().toURL()); 
        configuration.configure(server); 
    
        Connector[] connectors = server.getConnectors(); 
        if (connectors != null && connectors.length == 2) { 
         ServerConnector serverConnector = (ServerConnector) connectors[1]; 
         serverConnector.setPort(8443); 
        } 
        } 
    
        // Webapp context 
        WebAppContext webContext = new WebAppContext(ResourceManager.getWebappsPath(), "/myContext"); 
        webContext.setContextPath("/myContext"); 
        webContext.setResourceBase(ResourceManager.getWebappsPath() + contextPath); 
        webContext.setInitParameter("org.eclipse.jetty.servlet.Default.dirAllowed", "false"); 
    
        private List<WebAppContext> listWebContext = new ArrayList<>(); 
        listWebContext.add(webContext); 
    
        ContextHandlerCollection contexts = new ContextHandlerCollection(); 
        contexts.setHandlers(listWebContext.toArray(new WebAppContext[listWebContext.size()])); 
        server.setHandler(contexts); 
    
        // Start server 
        server.start(); 
    
        // Websocket 
        ServerContainer container = 
        WebSocketServerContainerInitializer.configureContext(webContext); 
        container.addEndpoint(webContext.getClassLoader().loadClass(
             "com.example.WSCommunication")); 
    
        container.setDefaultMaxSessionIdleTimeout(84600); 
    
        // Dump server log 
        server.dumpStdErr(); 
    
  2. Dump:

    [email protected] - STARTED 
         += qtp348159759{STARTED,10<=19<=200,i=1,q=0} - STARTED 
         | +- 30 qtp348159759-30 RUNNABLE @ sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method) 
        | +- 31 qtp348159759-31-lowPrioritySelector BLOCKED @ org.eclipse.jetty.io.ManagedSelector$SelectorProducer.produce(ManagedSelector.java:244) prio=1 
         | +- 89 qtp348159759-89-lowPrioritySelector BLOCKED @ org.eclipse.jetty.io.ManagedSelector$SelectorProducer.produce(ManagedSelector.java:244) prio=1 
         | +- 85 qtp348159759-85-lowPrioritySelector BLOCKED @ org.eclipse.jetty.io.ManagedSelector$SelectorProducer.produce(ManagedSelector.java:244) prio=1 
         | +- 33 qtp348159759-33-lowPrioritySelector BLOCKED @ org.eclipse.jetty.io.ManagedSelector$SelectorProducer.produce(ManagedSelector.java:244) prio=1 
         | +- 36 qtp348159759-36 RUNNABLE @ sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method) 
        | +- 35 qtp348159759-35-lowPrioritySelector BLOCKED @ org.eclipse.jetty.io.ManagedSelector$SelectorProducer.produce(ManagedSelector.java:244) prio=1 
         | +- 90 [email protected]@31de14e{SSL,[ssl, http/1.1]}{0.0.0.0:8443} RUNNABLE @ sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method) prio=3 
         | +- 84 qtp348159759-84 RUNNABLE @ sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method) 
        | +- 86 qtp348159759-86 RUNNABLE @ sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method) 
        | +- 38 [email protected]@52bab8e{HTTP/1.1,[http/1.1]}{0.0.0.0:8080} RUNNABLE @ sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method) prio=3 
         | +- 87 qtp348159759-87-lowPrioritySelector BLOCKED @ org.eclipse.jetty.io.ManagedSelector$SelectorProducer.produce(ManagedSelector.java:244) prio=1 
         | +- 92 qtp348159759-92 TIMED_WAITING @ sun.misc.Unsafe.park(Native Method) IDLE 
         | +- 32 qtp348159759-32 RUNNABLE @ sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method) 
        | +- 34 qtp348159759-34 RUNNABLE @ sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method) 
        | +- 88 qtp348159759-88 RUNNABLE @ sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method) 
        | +- 39 qtp348159759-39 RUNNABLE @ sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method) 
        | +- 37 qtp348159759-37-lowPrioritySelector BLOCKED @ org.eclipse.jetty.io.ManagedSelector$SelectorProducer.produce(ManagedSelector.java:244) prio=1 
         | +- 83 qtp348159759-83-lowPrioritySelector BLOCKED @ org.eclipse.jetty.io.ManagedSelector$SelectorProducer.produce(ManagedSelector.java:244) prio=1 
         | +- jobs 
         += [email protected]d - STARTED 
         | +- sun.misc.Unsafe.park(Native Method) 
         | +- java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) 
         | +- java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078) 
         | +- java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093) 
         | +- java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809) 
         | +- java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) 
         | +- java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) 
         | +- java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
         | +- java.lang.Thread.run(Thread.java:745) 
         += [email protected]{HTTP/1.1,[http/1.1]}{0.0.0.0:8080} - STARTED 
         | +~ [email protected] - STARTED 
         | +~ qtp348159759{STARTED,10<=19<=200,i=1,q=0} - STARTED 
         | +~ [email protected]d - STARTED 
         | +- org.eclipse.jetty.io.Arr[email protected] 
         | += [email protected][HTTP/1.1] - STARTED 
         | | +- [email protected]{32768/8192,8192/8192,https://:8443,[]} 
         | += [email protected]282048ea - STARTED 
         | | += [email protected] id=0 keys=0 selected=0 id=0 
         | | | +- [email protected] keys=0 
         | | += [email protected] id=1 keys=0 selected=0 id=1 
         | | | +- [email protected] keys=0 
         | | += [email protected] id=2 keys=0 selected=0 id=2 
         | | | +- [email protected] keys=0 
         | | += [email protected] id=3 keys=0 selected=0 id=3 
         | |  +- [email protected] keys=0 
         | +- sun.nio.ch.ServerSocketChannelImpl[/0:0:0:0:0:0:0:0:8080] 
         | +- [email protected]@52bab8e{HTTP/1.1,[http/1.1]}{0.0.0.0:8080} 
         += [email protected]{SSL,[ssl, http/1.1]}{0.0.0.0:8443} - STARTED 
         | +~ [email protected] - STARTED 
         | +~ qtp348159759{STARTED,10<=20<=200,i=2,q=0} - STARTED 
         | +~ [email protected]d - STARTED 
         | +- [email protected] 
         | += [email protected]{SSL->http/1.1} - STARTED 
         | | += [email protected](file:///workspace/myApp/myApp-server/webapps/conf/iDS.keystore,null) trustAll=false 
         | |  +- Protocol Selections 
         | |  | +- Enabled (size=3) 
         | |  | | +- TLSv1 
         | |  | | +- TLSv1.1 
         | |  | | +- TLSv1.2 
         | |  | +- Disabled (size=2) 
         | |  |  +- SSLv2Hello - ConfigExcluded:'SSLv2Hello' 
         | |  |  +- SSLv3 - JreDisabled:java.security, ConfigExcluded:'SSLv3' 
         | |  +- Cipher Suite Selections 
         | |   +- Enabled (size=43) 
         | |   | [CIPHERS] 
         | |   +- Disabled (size=39) 
         | |    [CIPHERS] 
         | += [email protected][HTTP/1.1] - STARTED 
         | | +- [email protected]{32768/8192,8192/8192,https://:8443,[[email protected]]} 
         | += [email protected]14690caf - STARTED 
         | | += [email protected] id=0 keys=0 selected=0 id=0 
         | | | +- [email protected] keys=0 
         | | += [email protected] id=1 keys=0 selected=0 id=1 
         | | | +- [email protected] keys=0 
         | | += [email protected] id=2 keys=0 selected=0 id=2 
         | | | +- [email protected] keys=0 
         | | += [email protected] id=3 keys=0 selected=0 id=3 
         | |  +- [email protected] keys=0 
         | +- sun.nio.ch.ServerSocketChannelImpl[/0:0:0:0:0:0:0:0:8443] 
         | +- [email protected]@31de14e{SSL,[ssl, http/1.1]}{0.0.0.0:8443} 
         += [email protected]7e[[email protected]{/myContext,file:///workspace/myApp/myApp-server/webapps/myContext/,AVAILABLE}{/workspace/myApp/myApp-server/webapps}, [email protected]{/myContext_persistent,file:///workspace/myApp/myApp-server/data/my_persistent/,AVAILABLE}{/workspace/myApp/myApp-server/data}] - STARTED 
         | += [email protected]{/myContext,file:///workspace/myApp/myApp-server/webapps/myContext/,AVAILABLE}{/workspace/myApp/myApp-server/webapps} - STARTED 
         | | += org.eclipse.jetty.server.session.SessionHandler589427621==dftMaxIdleSec=1800 - STARTED 
         | | | += [email protected] - STARTED 
         | | | | +- [email protected] 
         | | | | += [email protected] - STARTED 
         | | | | | += [email protected] - STARTED 
         | | | | | += org.eclipse.jetty.servlet[email protected] - STARTED 
         | | | | | += [email protected]==org.eclipse.jetty.servlet.DefaultServlet,jsp=null,order=0,inst=true - STARTED 
         | | | | | | +- aliases=false 
         | | | | | | +- dirAllowed=true 
         | | | | | | +- maxCacheSize=256000000 
         | | | | | | +- maxCachedFileSize=200000000 
         | | | | | | +- welcomeServlets=false 
         | | | | | | +- useFileMappedBuffer=true 
         | | | | | | +- acceptRanges=true 
         | | | | | | +- etags=false 
         | | | | | | +- maxCachedFiles=2048 
         | | | | | | +- redirectWelcome=false 
         | | | | | += [email protected]==org.eclipse.jetty.jsp.JettyJspServlet,jsp=null,order=0,inst=true - STARTED 
         | | | | | | +- fork=false 
         | | | | | | +- compilerSourceVM=1.7 
         | | | | | | +- logVerbosityLevel=DEBUG 
         | | | | | | +- compilerTargetVM=1.7 
         | | | | | | +- scratchdir=/private/var/folders/8p/f__1hb6j0p5bq7ljqdkjg35h0000gn/T/jetty-0.0.0.0-8080-myContext-_myContext-any-6227228818832412481.dir/jsp 
         | | | | | | +- xpoweredBy=false 
         | | | | | +- [/]=>default 
         | | | | | +- [*.jsp, *.jspf, *.jspx, *.xsp, *.JSP, *.JSPF, *.JSPX, *.XSP]=>jsp 
         | | | | | += [email protected] - STARTED 
         | | | | | += [email protected] - STARTED 
         | | | | | += ISSSecurityFilter - STARTED 
         | | | | | += GzipFilter - STARTED 
         | | | | | | +- mimeTypes=text/plain,text/html,text/css,application/javascript,application/x-javascript,application/json 
         | | | | | += [email protected]==com.example.web.Dashboard,jsp=null,order=1,inst=true - STARTED 
         | | | | | | +- parameter=value 
         | | | | | += [email protected]==org.springframework.web.servlet.DispatcherServlet,jsp=null,order=-1,inst=false - STARTED 
         | | | | | [SERVLET MAPPING] 
         | | | | | +~ Jetty_WebSocketUpgradeFilter - STARTED 
         | | | | | +- [/*]/[]==1=>Jetty_WebSocketUpgradeFilter 
        | | | | | 
        | | | | +> null 
        | | | | +> null 
        | | | | +> null 
        | | | | +> [] 
        | | | | +> /*={*={RoleInfo[],Confidential}} 
        | | | | +> /={TRACE={RoleInfo,F,C[],None}, TRACE.omission={RoleInfo[],None}} 
        | | | +~ [email protected] 
        | | | += [email protected][evict=-1,removeUnloadable=false,saveOnCreate=false,saveOnInactiveEvict=false] - STARTED 
        | | | | += [email protected][passivating=false,graceSec=3600] - STARTED 
        | | | +~ [email protected]5[worker=node0] - STARTED 
        | | += [email protected] - STARTED 
        | | +~ [email protected]a8 - STOPPED 
        | | | 
        | | +> [email protected] 
        | | | [LIBS] 
        | | | +- [email protected] 
        | | +> Systemclasses [email protected]{/myContext,file:///workspace/myApp/myApp-server/webapps/myContext/,AVAILABLE}{/workspace/myApp/myApp-server/webapps} 
        | | | +- java. 
        | | | +- javax. 
        | | | +- org.eclipse.jetty.continuation. 
        | | | +- org.eclipse.jetty.jaas. 
        | | | +- org.eclipse.jetty.jmx. 
        | | | +- org.eclipse.jetty.jndi. 
        | | | +- org.eclipse.jetty.jsp.JettyJspServlet 
        | | | +- org.eclipse.jetty.servlet.DefaultServlet 
        | | | +- org.eclipse.jetty.servlets.PushCacheFilter 
        | | | +- org.eclipse.jetty.servlets.PushSessionCacheFilter 
        | | | +- org.eclipse.jetty.util.annotation. 
        | | | +- org.eclipse.jetty.util.log. 
        | | | +- org.eclipse.jetty.websocket. 
        | | | +- org.w3c. 
        | | | +- org.xml. 
        | | +> Serverclasses [email protected]{/myContext,file:///workspace/myApp/myApp-server/webapps/myContext/,AVAILABLE}{/workspace/myApp/myApp-server/webapps} 
        | | | +- -org.eclipse.jetty.alpn. 
        | | | +- -org.eclipse.jetty.apache. 
        | | | +- -org.eclipse.jetty.continuation. 
        | | | +- -org.eclipse.jetty.jaas. 
        | | | +- -org.eclipse.jetty.jmx. 
        | | | +- -org.eclipse.jetty.jndi. 
        | | | +- -org.eclipse.jetty.jsp. 
        | | | +- -org.eclipse.jetty.server.session.SessionData 
        | | | +- -org.eclipse.jetty.servlet.DefaultServlet 
        | | | +- -org.eclipse.jetty.servlet.NoJspServlet 
        | | | +- -org.eclipse.jetty.servlet.listener. 
        | | | +- -org.eclipse.jetty.servlets. 
        | | | +- -org.eclipse.jetty.util.annotation. 
        | | | +- -org.eclipse.jetty.util.log. 
        | | | +- -org.eclipse.jetty.websocket. 
        | | | +- org.eclipse.jdt. 
        | | | +- org.eclipse.jetty. 
        | | | +- org.objectweb.asm. 
        | | +> Configurations [email protected]{/myContext,file:///workspace/myApp/myApp-server/webapps/myContext/,AVAILABLE}{/workspace/myApp/myApp-server/webapps} 
        | | | +- [email protected] 
        | | | +- [email protected] 
        | | | +- [email protected] 
        | | | +- [email protected] 
        | | | +- [email protected] 
        | | +> Handler attributes [email protected]{/myContext,file:///workspace/myApp/myApp-server/webapps/myContext/,AVAILABLE}{/workspace/myApp/myApp-server/webapps} 
        | | | +- javax.servlet.context.tempdir=/private/var/folders/8p/f__1hb6j0p5bq7ljqdkjg35h0000gn/T/jetty-0.0.0.0-8080-myContext-_myContext-any-6227228818832412481.dir 
        | | | +- org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.SCI=WebSocketUpgradeFilter[configuration=[email protected]468b9d9f] 
        | | | +- org.eclipse.jetty.server.Executor=qtp348159759{STARTED,10<=20<=200,i=2,q=0} 
        | | | +- org.apache.catalina.jsp_classpath=[LIBS] 
        | | | +- javax.websocket.server.ServerCont[email protected]6fda53a8 
        | | +> Context attributes [email protected]{/myContext,file:///workspace/myApp/myApp-server/webapps/myContext/,AVAILABLE}{/workspace/myApp/myApp-server/webapps} 
        | | | +- org.eclipse.jetty.util.DecoratedObjectFactory=org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 
        | | | +- com.sun.jsp.tagFileJarUrlsCache={} 
        | | | +- org.springframework.web.context.support.ServletContextSc[email protected]30be2c30 
        | | | +- org.springframework.web.context.WebApplicationContext.ROOT=Root WebApplicationContext: startup date [Thu Mar 02 22:05:59 ICT 2017]; root of context hierarchy 
        | | | +- resourceCache=ResourceCache[null,[email protected]]@647951169 
        | | | +- org.eclipse.jetty.websocket.server.NativeWebSocketConfiguration=[email protected]468b9d9f 
        | | | +- org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter=WebSocketUpgradeFilter[configuration=[email protected]468b9d9f] 
        | | | +- com.sun.jsp.taglibraryCache={} 
        | | +> Initparams [email protected]{/myContext,file:///workspace/myApp/myApp-server/webapps/myContext/,AVAILABLE}{/workspace/myApp/myApp-server/webapps} 
        | |  +- contextConfigLocation=classpath:applicationContext.xml 
        | |  +- org.eclipse.jetty.servlet.Default.dirAllowed=false 
        | += [email protected]{/myContext_persistent,file:///workspace/myApp/myApp-server/data/my_persistent/,AVAILABLE}{/workspace/myApp/myApp-server/data} - STARTED 
        |  += org.eclipse.jetty.server.session.SessionHandler1013179752==dftMaxIdleSec=1800 - STARTED 
        |  | += [email protected] - STARTED 
        |  | | +- [email protected] 
        |  | | += [email protected] - STARTED 
        |  | | | += [email protected] - STARTED 
        |  | | | += [email protected] - STARTED 
        |  | | | += [email protected]==org.eclipse.jetty.servlet.DefaultServlet,jsp=null,order=0,inst=true - STARTED 
        |  | | | | +- aliases=false 
        |  | | | | +- dirAllowed=true 
        |  | | | | +- maxCacheSize=256000000 
        |  | | | | +- maxCachedFileSize=200000000 
        |  | | | | +- welcomeServlets=false 
        |  | | | | +- useFileMappedBuffer=true 
        |  | | | | +- acceptRanges=true 
        |  | | | | +- etags=false 
        |  | | | | +- maxCachedFiles=2048 
        |  | | | | +- redirectWelcome=false 
        |  | | | += [email protected]==org.eclipse.jetty.jsp.JettyJspServlet,jsp=null,order=0,inst=true - STARTED 
        |  | | | | +- fork=false 
        |  | | | | +- compilerSourceVM=1.7 
        |  | | | | +- logVerbosityLevel=DEBUG 
        |  | | | | +- compilerTargetVM=1.7 
        |  | | | | +- scratchdir=/private/var/folders/8p/f__1hb6j0p5bq7ljqdkjg35h0000gn/T/jetty-0.0.0.0-8080-my_persistent-_myContext_persistent-any-707911495794918084.dir/jsp 
        |  | | | | +- xpoweredBy=false 
        |  | | | +- [/]=>default 
        |  | | | +- [*.jsp, *.jspf, *.jspx, *.xsp, *.JSP, *.JSPF, *.JSPX, *.XSP]=>jsp 
        |  | | | 
        |  | | +> null 
        |  | | +> null 
        |  | | +> null 
        |  | | +> [] 
        |  | | +> /={TRACE={RoleInfo,F,C[],None}, TRACE.omission={RoleInfo[],None}} 
        |  | += [email protected][evict=-1,removeUnloadable=false,saveOnCreate=false,saveOnInactiveEvict=false] - STARTED 
        |  | | += [email protected][passivating=false,graceSec=3600] - STARTED 
        |  | +~ org.eclipse.jetty.server.session.Defa[email protected][worker=node0] - STARTED 
        |  += [email protected] - STARTED 
        |  | 
        |  +> [email protected] 
        |  | +- [email protected] 
        |  +> Systemclasses [email protected]{/myContext_persistent,file:///workspace/myApp/myApp-server/data/my_persistent/,AVAILABLE}{/workspace/myApp/myApp-server/data} 
        |  | +- java. 
        |  | +- javax. 
        |  | +- org.eclipse.jetty.continuation. 
        |  | +- org.eclipse.jetty.jaas. 
        |  | +- org.eclipse.jetty.jmx. 
        |  | +- org.eclipse.jetty.jndi. 
        |  | +- org.eclipse.jetty.jsp.JettyJspServlet 
        |  | +- org.eclipse.jetty.servlet.DefaultServlet 
        |  | +- org.eclipse.jetty.servlets.PushCacheFilter 
        |  | +- org.eclipse.jetty.servlets.PushSessionCacheFilter 
        |  | +- org.eclipse.jetty.util.annotation. 
        |  | +- org.eclipse.jetty.util.log. 
        |  | +- org.eclipse.jetty.websocket. 
        |  | +- org.w3c. 
        |  | +- org.xml. 
        |  +> Serverclasses [email protected]{/myContext_persistent,file:///workspace/myApp/myApp-server/data/my_persistent/,AVAILABLE}{/workspace/myApp/myApp-server/data} 
        |  | +- -org.eclipse.jetty.alpn. 
        |  | +- -org.eclipse.jetty.apache. 
        |  | +- -org.eclipse.jetty.continuation. 
        |  | +- -org.eclipse.jetty.jaas. 
        |  | +- -org.eclipse.jetty.jmx. 
        |  | +- -org.eclipse.jetty.jndi. 
        |  | +- -org.eclipse.jetty.jsp. 
        |  | +- -org.eclipse.jetty.server.session.SessionData 
        |  | +- -org.eclipse.jetty.servlet.DefaultServlet 
        |  | +- -org.eclipse.jetty.servlet.NoJspServlet 
        |  | +- -org.eclipse.jetty.servlet.listener. 
        |  | +- -org.eclipse.jetty.servlets. 
        |  | +- -org.eclipse.jetty.util.annotation. 
        |  | +- -org.eclipse.jetty.util.log. 
        |  | +- -org.eclipse.jetty.websocket. 
        |  | +- org.eclipse.jdt. 
        |  | +- org.eclipse.jetty. 
        |  | +- org.objectweb.asm. 
        |  +> Configurations [email protected]{/myContext_persistent,file:///workspace/myApp/myApp-server/data/my_persistent/,AVAILABLE}{/workspace/myApp/myApp-server/data} 
        |  | +- [email protected] 
        |  | +- [email protected] 
        |  | +- [email protected] 
        |  | +- [email protected] 
        |  | +- [email protected] 
        |  +> Handler attributes [email protected]{/myContext_persistent,file:///workspace/myApp/myApp-server/data/my_persistent/,AVAILABLE}{/workspace/myApp/myApp-server/data} 
        |  | +- javax.servlet.context.tempdir=/private/var/folders/8p/f__1hb6j0p5bq7ljqdkjg35h0000gn/T/jetty-0.0.0.0-8080-my_persistent-_myContext_persistent-any-707911495794918084.dir 
        |  | +- org.eclipse.jetty.server.Executor=qtp348159759{STARTED,10<=20<=200,i=2,q=0} 
        |  +> Context attributes [email protected]{/myContext_persistent,file:///workspace/myApp/myApp-server/data/my_persistent/,AVAILABLE}{/workspace/myApp/myApp-server/data} 
        |  | +- org.eclipse.jetty.util.DecoratedObjectFactory=org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 
        |  | +- com.sun.jsp.tagFileJarUrlsCache={} 
        |  | +- resourceCache=ResourceCache[null,[email protected]]@1323290175 
        |  | +- com.sun.jsp.taglibraryCache={} 
        |  +> Initparams [email protected]{/myContext_persistent,file:///workspace/myApp/myApp-server/data/my_persistent/,AVAILABLE}{/workspace/myApp/myApp-server/data} 
        |   +- org.eclipse.jetty.servlet.Default.dirAllowed=false 
        += [email protected] - STARTED 
        +- {} 
        +- {} 
        +- {} 
        += [email protected]5[worker=node0] - STARTED 
        | += [email protected][interval=600000, ownscheduler=false] - STARTED 
        | 
        +> [email protected] 
         [LIBS] 
         +- [email protected] 
    

Le code ci-dessus fonctionne correctement avec Jetty 9.1.5.v20140505 et Java 7, mais en cas d'échec lors de la mise à niveau vers Jetty 9.4.1.v20170120 et Java 8. La console du navigateur signale une erreur 404.

WebSocket connection to 'wss://localhost:8443/myContext/ws/communication/5/kbui/None' failed: Unexpected response code: 404 

Ai-je raté quelque chose lors de la mise à niveau Jetty?
Merci d'avance.

+0

Qu'est-ce que votre look d'initialisation WebContext comme? –

+1

Videz votre serveur (post-démarrage) et signalez son arbre dans votre question. 'server.dumpStdErr();' –

+0

Je modifie post pour ajouter le serveur, le code de contexte Webapp. –

Répondre

0

A en juger par votre configuration, vous aurez dans votre configuration avec le vent ...

wss://localhost:8443/myContext/ws/communication/5/kbui/None

Votre contextPath n'est pas /context, son fait /myContext.

Vous rognée la section Mappages Servlet sur la décharge (qui est la partie importante. Heh)

Mais en essayant d'ajouter manuellement le WSCommunication Endpoint contenu dans WebAppContext de l'extérieur du WebAppClassloader ou de ServletContext de la WebApp va probablement être un problème aussi bien.

Vous avez 3 options:

  1. La JSR356 automatique Way

    Configuration bytecode numérisation et découverte d'annotation pour votre WebAppContext et laissez-le découvrir et le démarrage de chargement automatique du point final WSCommunication.

    Ajoutez les éléments suivants à votre webContext ...

webContext.setAttribute("org.eclipse.jetty.websocket.jsr356",Boolean.TRUE); 

webContext.setConfigurations(new Configuration[] { 
      new AnnotationConfiguration(), 
      new WebXmlConfiguration(), 
      new WebInfConfiguration(), 
      new PlusConfiguration(), 
      new MetaInfConfiguration(), 
      new FragmentConfiguration(), 
      new EnvConfiguration()}); 

Et ajouter la dépendance jetty-annotations à votre projet.

  1. The Way Manuel JSR356

    Utilisez le javax.websocket.server.ServerApplicationConfig pour signaler l'WSCommunication comme étant disponibles à ajouter à l'intérieur du démarrage de la webapp.

  2. Le Servlet Spec Way Manuel

    C'est la meilleure approche. Créer un javax.servlet.ServletContextListener qui ajoute le critère d'évaluation WSCommunication au ServerContainer

public class MyContextListener implements ServletContextListener 
{ 
    @Override 
    public void contextDestroyed(ServletContextEvent sce) 
    { 
    } 

    @Override 
    public void contextInitialized(ServletContextEvent sce) 
    { 
     ServerContainer container = (ServerContainer)sce.getServletContext() 
        .getAttribute(ServerContainer.class.getName()); 

     try 
     { 
      container.addEndpoint(WSCommunication.class); 
     } 
     catch (DeploymentException e) 
     { 
      throw new RuntimeException("Unable to add endpoint",e); 
     } 
    } 
} 
+0

J'essaie l'approche # 1 et ça fonctionne comme un charme. Merci beaucoup. –

+0

A propos de comment le code précédent fonctionne sur 9.1.5, vous voulez dire que je configure websocket mal, mais 9.1.5 encore accepter, aller à 9.4.1 le serveur Jetty est plus stricte, puis il refuse. Droite? –

+0

Une autre question, en réalité, mon serveur peut supporter plusieurs contextes, toutes les 3 approches fonctionnent encore avec plusieurs WebAppContext? –