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

Ваше здоровье!

Другие вопросы по тегам