2015-05-28 3 views
2

Я учусь о WebSockets и следовали инструкции здесь: http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/HomeWebsocket/WebsocketHome.htmlWebSocket рукопожатия: Неожиданный код ответа: 404 -

Я с помощью TOMCAT v8.0.21, чтобы развернуть мой веб-приложение, но получаю следующую ошибку

Мой JavaScript Проект выглядит отлично, когда я нахожусь в webapp: мой локальный хост и посещаю WebSocketJavaScriptProject

Хотя в окне консоли получить сообщение об ошибке: соединение WebSocket с «ws: // localhost: 8080/WebsocketHome/actions» не выполнено: ошибка при рукопожатии WebSocket : Неожиданный код ответа: 404

Мой код живет здесь: https://github.com/darkcloudi/WebSocketProject

Разница между моим приложением и, например, на Oracle, я расколол его как два проекта один сервис, а другой WebAPP.

Я не могу понять, почему я получаю 404, поскольку сервисный файл .war называется WebsocketHome. Любые идеи, которые могут вызвать эту проблему? Обычно 404 не найден так предполагаю, что не может найти службу, я уверен, что я делаю что-то глупое, но не могу понять, где проблема

Благодаря

+0

Что происходит, когда вы посещаете 'ws: // localhost: 8080/WebsocketHome/actions' через ваш браузер? – Bellash

+0

Я использую последний Chrome и получаю «Эта страница недоступна» ERR_DISALLOWED_URL_SCHEME – sam

ответ

3

ошибка во время рукопожатия происходит потому, что Tomcat имеет свой собственный api для websockets. Таким образом, вы могли бы добавить реализацию JSR или что-то подобное javax.websocket-api в вашем pom.xml, возникает конфликт во время выполнения.

Попробуйте не экспортировать вашу библиотеку Websocket на ваш веб-сервер, поэтому она использует свою собственную реализацию.

Если вы используете 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. , а затем добавьте только то, что вы импортируете в файле serverendpoint.

Смежные вопросы