2017-02-14 105 views
0

這裏是我的設置在春天一個簡單的WebSocket控制器:的NoSuchMethodError WebUtils.isValidOrigin春天的WebSocket

@Controller 
@RequestMapping("/myHandler") 
public class MyHandler extends TextWebSocketHandler { 
    public void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { 
     String reply = "Hello there!!!!!!!!"; 
     session.sendMessage(new TextMessage(reply)); 
    } 
} 

MCV-調度-servlet.xml中

<websocket:handlers allowed-origins="http://localhost"> 
    <websocket:mapping path="/myHandler" handler="myHandler"/> 
    <websocket:handshake-interceptors> 
     <bean class="org.springframework.web.socket.server.support.HttpSessionHandshakeInterceptor"/> 
    </websocket:handshake-interceptors> 
</websocket:handlers> 

<bean id="myHandler" class="com.aexp.socket.MyHandler"/> 

我所有的jar文件更新正確版本 但我得到以下錯誤:

HTTP Status 500 - Request processing failed; nested exception is org.springframework.web.socket.server.HandshakeFailureException: Uncaught failure for request http://localhost:8080/Websocket/myHandler; nested exception is java.lang.NoSuchMethodError: org.springframework.web.util.WebUtils.isValidOrigin(Lorg/springframework/http/HttpRequest;Ljava/util/Collection;)Z 

root cause 

org.springframework.web.socket.server.HandshakeFailureException: Uncaught failure for request http://localhost:8080/Websocket/myHandler; nested exception is java.lang.NoSuchMethodError: org.springframework.web.util.WebUtils.isValidOrigin(Lorg/springframework/http/HttpRequest;Ljava/util/Collection;)Z 
org.springframework.web.socket.server.support.WebSocketHttpRequestHandler.handleRequest(WebSocketHttpRequestHandler.java:135) 
org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:49) 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900) 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827) 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 

而當我嘗試克至在JS創建的WebSocket對象我得到以下幾點:

(Opcode -1) 

這是我第一次嘗試使用WebSockets所以不知道我錯過了什麼。有人能指引我走向正確的方向嗎?謝謝。

回答

0

嘗試修改您的.xml配置如下:

<websocket:handlers allowed-origins="http://localhost"> 
    <websocket:mapping path="/myHandler" handler="myHandler"/> 
    <websocket:handshake-interceptors> 
    <bean class="org.springframework.web.socket.server.support.HttpSessionHandshakeInterceptor"/> 
    <websocket:sockjs/> 
</websocket:handshake-interceptors> 

希望這有助於!

0

您錯過了「spring-web」依賴關係。 以下內容添加到您的POM:

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-web</artifactId> 
    <version>${spring.version}</version> 
</dependency> 

你也可能需要運行「乾淨」的目標,並重建項目。