2015-05-28 95 views
2

我正在學習有關的WebSockets和遵循這些指令:http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/HomeWebsocket/WebsocketHome.html的WebSocket握手:意外的響應代碼:404 -

我使用Tomcat v8.0.21部署web應用程序我,但得到以下錯誤

我的JavaScript項目看起來很好,當我訪問webapp:我的本地主機並訪問WebSocketJavaScriptProject

雖然在控制檯窗口中得到錯誤:WebSocket連接到'ws:// localhost:8080/WebsocketHome/actions'失敗:WebSocket握手期間出錯:意外的響應代碼:404

我的代碼是住在這裏:我的應用程序和甲骨文樣板間https://github.com/darkcloudi/WebSocketProject

的差額,我已經把它拆分爲兩個項目一個服務和其他Web應用程序。

我不明白爲什麼我會得到一個404,因爲服務.war文件被稱爲WebsocketHome。任何想法會導致這個問題?通常一個404沒有找到這樣猜測它無法找到服務,我敢肯定,我在做一些愚蠢的事,但找不出問題出在哪裏是在握手期間

感謝

+0

當您通過瀏覽器訪問'ws:// localhost:8080/WebsocketHome/actions'時會發生什麼? – Bellash

+0

我正在使用最新的Chrome瀏覽器並獲得「此網頁不可用」 ERR_DISALLOWED_URL_SCHEME – sam

回答

3

錯誤發生,因爲Tomcat的有自己的websockets api。因此,您可能已在您的pom.xml中添加了JSR實現或與javax.websocket-api類似的東西,在運行時會出現衝突。

嘗試不將WebSocket庫導出到您的Web服務器,因此它使用自己的實現。

如果你使用Maven的,設置的WebSocket依賴所提供:

<!-- Provided Websocket API, because tomcat has its own implementation --> 
<dependency> 
    <groupId>javax.websocket</groupId> 
    <artifactId>javax.websocket-api</artifactId> 
    <version>1.1</version> 
    <scope>provided</scope> 
</dependency> 
+0

感謝您的回覆。所以我嘗試了你的建議和它的工作。謝謝:)我可以看到在控制檯,我得到狀態代碼:101切換協議,所以這很好。但是現在在日誌中看到一個不同的錯誤(請參閱下文),需要查看服務正在運行的主要原因。 08-Jun-2015 20:40:31.276 SEVERE [http-nio-8080-exec-13] org.example.websocket.DeviceWebSocketServer.onError null java.lang.NullPointerException – sam

+0

出現第一個錯誤是當它的開放連接需要時做更多的調試。 duffy--再次感謝我,因爲我從未意識到Tomcat有自己的實現。 08-Jun-2015 20:55:41.287 SEVERE [http-nio-8080-exec-26] org.example.websocket.DeviceWebSocketServer.onError null java.lang.NullPointerException \t at org.example.websocket.DeviceWebSocketServer.open (DeviceWebSocketServer.java:29) – sam

+1

這是答案的聖盃。我花了幾天的時間找到這個答案。 – Ishmael

0

我也有同樣的問題。 嘗試刪除$ JAVA_HOME/lib文件夾中包含websocket的不需要的jar。 ,然後只添加您在serverendpoint文件中導入的內容。

相關問題