Я протестировал # 1, работает с несколькими контекстами (каждый контекст имеет свое собственное соединение с веб-сокетом WSCommunication).
екущий веб-сервер является встроенным Jetty 9.1.5. Он хорошо работает с JSR-356 для создания веб-сокета. В эти дни я пытаюсь перейти на Jetty 9.4.1. Все работает хорошо, кроме веб-сокета.
Мой код, как показано ниже:
<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>
Конечная точка сервера: @ServerEndpoint(value = "/ws/communication/{officeId}/{username}/{oldWSSession}")
class WSCommunication {
// @OnOpen, @OnMessage, @OnClose methods
}
Сервер Jetty, контекст Webapp, конфигурация 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();
Dump:
org.eclipse.jetty.server.Server@5ca13457 - 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 qtp348159759-90-acceptor-0@6a934d20-ServerConnector@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 qtp348159759-38-acceptor-0@21398b5e-ServerConnector@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
+= org.eclipse.jetty.util.thread.ScheduledExecutorScheduler@1ca4b0fd - 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)
+= ServerConnector@52bab8e{HTTP/1.1,[http/1.1]}{0.0.0.0:8080} - STARTED
| +~ org.eclipse.jetty.server.Server@5ca13457 - STARTED
| +~ qtp348159759{STARTED,10<=19<=200,i=1,q=0} - STARTED
| +~ org.eclipse.jetty.util.thread.ScheduledExecutorScheduler@1ca4b0fd - STARTED
| +- org.eclipse.jetty.io.ArrayByteBufferPool@4f751fc9
| += HttpConnectionFactory@30bf9c09[HTTP/1.1] - STARTED
| | +- HttpConfiguration@248e9950{32768/8192,8192/8192,https://:8443,[]}
| += org.eclipse.jetty.server.ServerConnector$ServerConnectorManager@282048ea - STARTED
| | += org.eclipse.jetty.io.ManagedSelector@65c05e53 id=0 keys=0 selected=0 id=0
| | | +- sun.nio.ch.KQueueSelectorImpl@6724bccb keys=0
| | += org.eclipse.jetty.io.ManagedSelector@1fa04d47 id=1 keys=0 selected=0 id=1
| | | +- sun.nio.ch.KQueueSelectorImpl@5fcb5753 keys=0
| | += org.eclipse.jetty.io.ManagedSelector@7999a7f0 id=2 keys=0 selected=0 id=2
| | | +- sun.nio.ch.KQueueSelectorImpl@3abe8266 keys=0
| | += org.eclipse.jetty.io.ManagedSelector@6d2e80a1 id=3 keys=0 selected=0 id=3
| | +- sun.nio.ch.KQueueSelectorImpl@2e5f2aae keys=0
| +- sun.nio.ch.ServerSocketChannelImpl[/0:0:0:0:0:0:0:0:8080]
| +- qtp348159759-38-acceptor-0@21398b5e-ServerConnector@52bab8e{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
+= ServerConnector@31de14e{SSL,[ssl, http/1.1]}{0.0.0.0:8443} - STARTED
| +~ org.eclipse.jetty.server.Server@5ca13457 - STARTED
| +~ qtp348159759{STARTED,10<=20<=200,i=2,q=0} - STARTED
| +~ org.eclipse.jetty.util.thread.ScheduledExecutorScheduler@1ca4b0fd - STARTED
| +- org.eclipse.jetty.io.ArrayByteBufferPool@3838889e
| += SslConnectionFactory@7b040213{SSL->http/1.1} - STARTED
| | += SslContextFactory@a3ac71d(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]
| += HttpConnectionFactory@116d58cf[HTTP/1.1] - STARTED
| | +- HttpConfiguration@3ba7eaf0{32768/8192,8192/8192,https://:8443,[SecureRequestCustomizer@229efbd3]}
| += org.eclipse.jetty.server.ServerConnector$ServerConnectorManager@14690caf - STARTED
| | += org.eclipse.jetty.io.ManagedSelector@e1ecb28 id=0 keys=0 selected=0 id=0
| | | +- sun.nio.ch.KQueueSelectorImpl@2edda3f6 keys=0
| | += org.eclipse.jetty.io.ManagedSelector@aea4071 id=1 keys=0 selected=0 id=1
| | | +- sun.nio.ch.KQueueSelectorImpl@2482929a keys=0
| | += org.eclipse.jetty.io.ManagedSelector@5fff729c id=2 keys=0 selected=0 id=2
| | | +- sun.nio.ch.KQueueSelectorImpl@7f0a5bb3 keys=0
| | += org.eclipse.jetty.io.ManagedSelector@32f11b8 id=3 keys=0 selected=0 id=3
| | +- sun.nio.ch.KQueueSelectorImpl@153f56b1 keys=0
| +- sun.nio.ch.ServerSocketChannelImpl[/0:0:0:0:0:0:0:0:8443]
| +- qtp348159759-90-acceptor-0@6a934d20-ServerConnector@31de14e{SSL,[ssl, http/1.1]}{0.0.0.0:8443}
+= org.eclipse.jetty.server.handler.ContextHandlerCollection@7b10dd7e[o.e.j.w.WebAppContext@3e778e26{/myContext,file:///workspace/myApp/myApp-server/webapps/myContext/,AVAILABLE}{/workspace/myApp/myApp-server/webapps}, o.e.j.w.WebAppContext@2974d7ef{/myContext_persistent,file:///workspace/myApp/myApp-server/data/my_persistent/,AVAILABLE}{/workspace/myApp/myApp-server/data}] - STARTED
| += o.e.j.w.WebAppContext@3e778e26{/myContext,file:///workspace/myApp/myApp-se,rver/webapps/myContext/,AVAILABLE}{/workspace/myApp/myApp-server/webapps} - STARTED
| | += org.eclipse.jetty.server.session.SessionHandler589427621==dftMaxIdleSec=1800 - STARTED
| | | += org.eclipse.jetty.security.ConstraintSecurityHandler@76e1ecf - STARTED
| | | | +- org.eclipse.jetty.security.DefaultAuthenticatorFactory@7cb77d4b
| | | | += org.eclipse.jetty.servlet.ServletHandler@1b1b48e - STARTED
| | | | | += org.eclipse.jetty.servlet.ListenerHolder@2da1d3c6 - STARTED
| | | | | += org.eclipse.jetty.servlet.ListenerHolder@5ace38db - STARTED
| | | | | += default@5c13d641==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
| | | | | += jsp@19c47==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
| | | | | += org.eclipse.jetty.servlet.ListenerHolder@1dd44bec - STARTED
| | | | | += org.eclipse.jetty.servlet.ListenerHolder@114d991c - STARTED
| | | | | += ISSSecurityFilter - STARTED
| | | | | += GzipFilter - STARTED
| | | | | | +- mimeTypes=text/plain,text/html,text/css,application/javascript,application/x-javascript,application/json
| | | | | += Dashboard@38fd0a74==com.example.web.Dashboard,jsp=null,order=1,inst=true - STARTED
| | | | | | +- parameter=value
| | | | | += idental-mvc@441f8928==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}}
| | | +~ com.example.web.ContextListener@32d15710
| | | += org.eclipse.jetty.server.session.DefaultSessionCache@19f2b971[evict=-1,removeUnloadable=false,saveOnCreate=false,saveOnInactiveEvict=false] - STARTED
| | | | += org.eclipse.jetty.server.session.NullSessionDataStore@26c61a88[passivating=false,graceSec=3600] - STARTED
| | | +~ org.eclipse.jetty.server.session.DefaultSessionIdManager@5bbef235[worker=node0] - STARTED
| | += org.eclipse.jetty.servlet.ErrorPageErrorHandler@636f4785 - STARTED
| | +~ org.eclipse.jetty.websocket.jsr356.server.ServerContainer@6fda53a8 - STOPPED
| | |
| | +> WebAppClassLoader=myContext@27e16098
| | | [LIBS]
| | | +- sun.misc.Launcher$AppClassLoader@18b4aac2
| | +> Systemclasses o.e.j.w.WebAppContext@3e778e26{/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 o.e.j.w.WebAppContext@3e778e26{/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 o.e.j.w.WebAppContext@3e778e26{/myContext,file:///workspace/myApp/myApp-server/webapps/myContext/,AVAILABLE}{/workspace/myApp/myApp-server/webapps}
| | | +- org.eclipse.jetty.webapp.WebInfConfiguration@795e1681
| | | +- org.eclipse.jetty.webapp.WebXmlConfiguration@55dd7cc5
| | | +- org.eclipse.jetty.webapp.MetaInfConfiguration@4c174a94
| | | +- org.eclipse.jetty.webapp.FragmentConfiguration@71ed07ad
| | | +- org.eclipse.jetty.webapp.JettyWebXmlConfiguration@780efd0f
| | +> Handler attributes o.e.j.w.WebAppContext@3e778e26{/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=org.eclipse.jetty.websocket.server.NativeWebSocketConfiguration@468b9d9f]
| | | +- org.eclipse.jetty.server.Executor=qtp348159759{STARTED,10<=20<=200,i=2,q=0}
| | | +- org.apache.catalina.jsp_classpath=[LIBS]
| | | +- javax.websocket.server.ServerContainer=org.eclipse.jetty.websocket.jsr356.server.ServerContainer@6fda53a8
| | +> Context attributes o.e.j.w.WebAppContext@3e778e26{/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.ServletContextScope=org.springframework.web.context.support.ServletContextScope@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,org.eclipse.jetty.servlet.DefaultServlet@297785e5]@647951169
| | | +- org.eclipse.jetty.websocket.server.NativeWebSocketConfiguration=org.eclipse.jetty.websocket.server.NativeWebSocketConfiguration@468b9d9f
| | | +- org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter=WebSocketUpgradeFilter[configuration=org.eclipse.jetty.websocket.server.NativeWebSocketConfiguration@468b9d9f]
| | | +- com.sun.jsp.taglibraryCache={}
| | +> Initparams o.e.j.w.WebAppContext@3e778e26{/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
| += o.e.j.w.WebAppContext@2974d7ef{/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
| | += org.eclipse.jetty.security.ConstraintSecurityHandler@7dfd9178 - STARTED
| | | +- org.eclipse.jetty.security.DefaultAuthenticatorFactory@68b06b8f
| | | += org.eclipse.jetty.servlet.ServletHandler@39e59923 - STARTED
| | | | += org.eclipse.jetty.servlet.ListenerHolder@1a8e73d2 - STARTED
| | | | += org.eclipse.jetty.servlet.ListenerHolder@b6957aa - STARTED
| | | | += default@5c13d641==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
| | | | += jsp@19c47==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}}
| | += org.eclipse.jetty.server.session.DefaultSessionCache@606eb95b[evict=-1,removeUnloadable=false,saveOnCreate=false,saveOnInactiveEvict=false] - STARTED
| | | += org.eclipse.jetty.server.session.NullSessionDataStore@755718f4[passivating=false,graceSec=3600] - STARTED
| | +~ org.eclipse.jetty.server.session.DefaultSessionIdManager@5bbef235[worker=node0] - STARTED
| += org.eclipse.jetty.servlet.ErrorPageErrorHandler@1c2ee56f - STARTED
| |
| +> WebAppClassLoader=1053927516@3ed1a85c
| | +- sun.misc.Launcher$AppClassLoader@18b4aac2
| +> Systemclasses o.e.j.w.WebAppContext@2974d7ef{/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 o.e.j.w.WebAppContext@2974d7ef{/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 o.e.j.w.WebAppContext@2974d7ef{/myContext_persistent,file:///workspace/myApp/myApp-server/data/my_persistent/,AVAILABLE}{/workspace/myApp/myApp-server/data}
| | +- org.eclipse.jetty.webapp.WebInfConfiguration@5d3b3547
| | +- org.eclipse.jetty.webapp.WebXmlConfiguration@488aebda
| | +- org.eclipse.jetty.webapp.MetaInfConfiguration@5d7da87
| | +- org.eclipse.jetty.webapp.FragmentConfiguration@6eb942cf
| | +- org.eclipse.jetty.webapp.JettyWebXmlConfiguration@6a2cd352
| +> Handler attributes o.e.j.w.WebAppContext@2974d7ef{/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 o.e.j.w.WebAppContext@2974d7ef{/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,org.eclipse.jetty.servlet.DefaultServlet@756731f6]@1323290175
| | +- com.sun.jsp.taglibraryCache={}
| +> Initparams o.e.j.w.WebAppContext@2974d7ef{/myContext_persistent,file:///workspace/myApp/myApp-server/data/my_persistent/,AVAILABLE}{/workspace/myApp/myApp-server/data}
| +- org.eclipse.jetty.servlet.Default.dirAllowed=false
+= org.eclipse.jetty.server.handler.ErrorHandler@6ad45211 - STARTED
+- {}
+- {}
+- {}
+= org.eclipse.jetty.server.session.DefaultSessionIdManager@5bbef235[worker=node0] - STARTED
| += org.eclipse.jetty.server.session.HouseKeeper@666eba5a[interval=600000, ownscheduler=false] - STARTED
|
+> sun.misc.Launcher$AppClassLoader@18b4aac2
[LIBS]
+- sun.misc.Launcher$ExtClassLoader@fae8daf
Приведенный выше код прекрасно работает с Jetty 9.1.5.v20140505 и Java 7, но при сбое при обновлении до Jetty 9.4.1.v20170120 и Java 8. Консоль браузера сообщает об ошибке 404.
WebSocket connection to 'wss://localhost:8443/myContext/ws/communication/5/kbui/None' failed: Unexpected response code: 404
Я что-то пропустил при обновлении Jetty?
Заранее спасибо.