Spring Websocket и статус 404 при подключении
В работающем проекте Spring MVC 4.0.2, работающем под Tomcat 7.0.50, я пытаюсь реализовать Spring Websocket с конечной точкой простого брокера и sockjs stomp, следуя официальной ссылке. Итак, в contextConfigLocation (свойство DistpacherServlet) я добавил значение "websocket-config.xml", которое содержит:
> <websocket:message-broker application-destination-prefix="/app" >
> <websocket:stomp-endpoint path="/monitor">
> <websocket:sockjs />
> </websocket:stomp-endpoint>
> <websocket:simple-broker prefix="/topic"/>
> </websocket:message-broker>
В консоли затмения (журнал каталины), когда я запускаю Tomcat, появляются строки
- Инициализация ExecutorService 'clientInboundChannelExecutor'
- Инициализация ExecutorService 'clientOutboundChannelExecutor'
- Инициализация ExecutorService 'messageBrokerSockJsScheduler'
- Отображенный путь URL [/monitor/**] на обработчик типа [class org.springframework.web.socket.sockjs.support.SockJsHttpRequestHandler]
На странице JSP я положил код
,,,,
var socket = new SockJS("монитор");
var stompClient = Stomp.over (сокет);,,,,
К сожалению, когда я загружаю страницу jsp из Chrome (v32), я получаю эту ошибку:
Не удалось загрузить ресурс: сервер ответил со статусом 404 (не найдено)
http: // localhost: 8080 / (ProjectName) / monitor / info
Очевидно, что я делаю этот тест локально, тогда все остальные ресурсы веб-приложений будут доступны по адресу http://localhost/(ProjectName) правильно.
В чем дело?
**** Обновление 20 февраля 2014 г. Я пытался следовать этому разрешенному вопросу стека, который предлагает использовать Tomcat8 для Spring Websocket, к сожалению, он не работает
2 ответа
Любой вывод журнала на стороне сервера в результате запроса к /monitor/info? Как отображается сам DispatcherServlet? Я ожидал бы "/" от того, что у вас есть выше.
Конечная точка SockJS - это URL-адрес, отображаемый в Spring MVC (с SimpleUrlHandlerMapping), поэтому попробуйте другие методы контроллера Spring MVC. И включите логи, может ли быть фильтр или что-то еще, возвращающее 404?
Для тех, кто борется с этой проблемой, это может помочь. У меня было следующее в web.xml:
<servlet>
<servlet-name>rest</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>rest</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
И получил ответ 404 для этого URL-адреса: http://localhost:8080/(ProjectName)/monitor
Но этот работает как шарм: http://localhost:8080/(ProjectName)/rest/monitor
Ваше здоровье!