有關上一個問題,請參閱here。在Jetty中使用Websockets
我正在嘗試使用Websockets設置應用程序並在Jetty中運行。當我運行gradle jettyRun,但是,我得到:
javax.servlet.ServletException: Not running on Jetty, WebSocket support unavailable
at org.eclipse.jetty.websocket.server.WebSocketServerFactory.init(WebSocketServerFactory.java:411)
at org.eclipse.jetty.websocket.servlet.WebSocketServlet.init(WebSocketServlet.java:136)
at javax.servlet.GenericServlet.init(GenericServlet.java:241)
at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:440)
at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:440)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:926)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
This page表明,WebSockets的只是「Jetty的容器內」可以,但我會想到的是Jetty插件默認會這麼做。我需要重新配置嗎?
編輯:This issue表明Jetty插件的目標是Jetty的舊版本(並且與websockets不兼容)。不過,這已經很老了 - 我不知道它是否尚未解決的說法仍然正確。我會嘗試直接運行Jetty,而不是通過插件。
只想讓你知道,我並沒有拋棄這個問題 - 我會接受這個答案一旦我能得到它的工作,但我還是一直沒能成功儘管舉例說明,但仍可以運行嵌入Jetty。特別是,甚至可以在這裏使用超簡單化的示例http://www.eclipse.org/jetty/documentation/current/embedded-examples.html#embedded-minimal-servlet或這裏http://www.eclipse.org/jetty /documentation/current/embedding-jetty.html#d0e19135每次給出500響應。我會繼續嘗試! – scubbo
在日誌中顯示沒有任何明顯錯誤: $ java -Dorg.eclipse.jetty.util.log.class = org.eclipse.jetty.util.log.StdErrLog -jar build/libs/myProject-all-1.0.jar 2015-09-08 00:17:48.546:INFO :: main:日誌初始化[at] 298ms 2015-09-08 00:17:48.605:INFO:oejs.Server:main:jetty-9.3.z-SNAPSHOT 2015-09-08 00:17:48.665:INFO:oejs.ServerConnector:main:啓動ServerConnector [at] deb6432 {HTTP/1.1,[http/1.1]} {0.0.0.0:8080} 2015-09-08 00:17:48.666:INFO:oejs.Server:main:Started [at] 422ms [即使在請求後沒有進一步的日誌記錄] – scubbo
嗯 - 當我放棄對jetty-all的依賴時,切換到顯式依賴關係,這個例子有效!奇怪的。 我原來的build.gradle有: 編譯 'org.eclipse.jetty.aggregate:碼頭全:9.3.2.v20150730' 和工作版本有 編譯「org.eclipse.jetty:碼頭服務器:9.3。 2.v20150730' 編譯'org.eclipse。jetty:jetty-servlets:9.3.3.v20150827' compile'org.eclipse.jetty:jetty-webapp:9.3.3.v20150827' Accepting - thanks! – scubbo