2017-03-01 4 views
0

Mein aktueller Webserver ist Jetty 9.1.5 eingebettet. Es funktioniert gut mit JSR-356, um Websocket zu erstellen. In diesen Tagen versuche ich auf Jetty 9.4.1 zu aktualisieren. Alles funktioniert gut außer Websocket.
Mein Code wie unten:Websocket JSR-356 scheitern mit Jetty 9.4.1

  1. Embedded Jetty und 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> 
  1. Server-Endpunkt:
@ServerEndpoint(value = "/ws/communication/{officeId}/{username}/{oldWSSession}") 
    class WSCommunication { 
    // @OnOpen, @OnMessage, @OnClose methods 
    } 
  1. Jetty Server, Webapp Zusammenhang Websocket Konfiguration:

    // 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 
         | +- [email protected] 
         | += [email protected][HTTP/1.1] - STARTED 
         | | +- [email protected]{32768/8192,8192/8192,https://:8443,[]} 
         | += org.eclipse.jetty.server.ServerConnector$ServerConnect[email protected] - 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 
         | | | | | += [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 
        |  | +~ [email protected]5[worker=node0] - STARTED 
        |  += [email protected] - STARTED 
        |  | 
        |  +> [email protected] 
        |  | +- sun.misc.Launcher[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] 
    

Der obige Code funktioniert gut mit Jetty 9.1.5.v20140505 und Java 7, aber wenn beim Aktualisieren auf Jetty 9.4.1.v20170120 und Java 8 fehlschlagen. Browser-Konsole einen 404-Fehler melden.

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

Habe ich etwas vermisst, wenn Upgrade Jetty?
Vielen Dank im Voraus.

+0

fügt Wie sieht Ihre WebContext Initialisierung aussehen? –

+1

Dump deinen Server (nach dem Start) und melden Sie seinen Baum in Ihrer Frage. 'server.dumpStdErr();' –

+0

Ich ändere Post, um Server, Webapp-Kontextcode hinzuzufügen. –

Antwort

0

von Ihrem Setup zu urteilen, werden Sie mit Wind-up ...

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

Ihre contextPath nicht /context ist, seine eigentlich /myContext in Ihrem Setup.

Sie getrimmt auf der Kippe den Servletzuordnungen Abschnitt aus (das war der wichtigste Teil. Heh)

Aber versuchen, manuell die WSCommunication Endpoint in WebAppContext von außerhalb des WebAppClassloader enthaltenen hinzugefügt werden sollen oder die ServletContext WebApp wahrscheinlich wird auch ein Problem sein.

Sie haben 3 Optionen:

  1. Der JSR356 Automatische Way

    Setup-Bytecode-Scannen und Annotation Entdeckung für Ihre WebAppContext und lassen Sie den Start entdecken und Auto-laden WSCommunication Endpunkt.

    Fügen Sie Folgendes zu Ihrer webContext hinzu ...

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()}); 

und fügen Sie die jetty-annotations Abhängigkeit zu Ihrem Projekt.

  1. Die JSR356 Handbuch Way

    Verwenden Sie die javax.websocket.server.ServerApplicationConfig die WSCommunication als verfügbar berichten aus der Start der Webapp hinzugefügt werden.

  2. Der Servlet Spec Handbuch Way

    Dies ist der einfachste Ansatz. erstellen javax.servlet.ServletContextListener, die den WSCommunication Endpunkt zum 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

Ich versuche die # 1 Ansatz und es funktioniert wie ein Charme. Vielen Dank. –

+0

Über, wie vorheriger Code auf 9.1.5 funktioniert, meinst du, ich installiere websocket falsch, aber 9.1.5 akzeptiere immer noch, gehe zu 9.4.1 der Jetty-Server ist strenger, dann lehne es ab. Recht? –

+0

Eine andere Frage, in der Realität kann mein Server mehrere Kontexte unterstützen, alle 3 Ansätze arbeiten immer noch mit mehreren WebAppContext? –

Verwandte Themen