2017-02-14 1 views
0

Voici ma configuration pour un simple contrôleur de websocket au printemps:NoSuchMethodError WebUtils.isValidOrigin Spring 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)); 
    } 
} 

VGM-répartiteur-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"/> 

J'ai mis à jour tous les fichiers jar à versions correctes mais je reçois l'erreur suivante:

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) 

Et quand je suis tryin g pour créer un objet dans WebSocket JS I get suivantes:

(Opcode -1) 

C'est la première fois que je suis en train d'utiliser WebSockets donc pas sûr de ce que je suis absent. Quelqu'un peut-il me diriger vers la bonne direction? Merci.

Répondre

0

Essayez de modifier votre configuration .xml comme suit:

<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> 

Espoir qui a aidé!

0

Il vous manque la dépendance "spring-web". Ajouter ce qui suit à votre pom:

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

Aussi, vous avez probablement besoin d'exécuter l'objectif « propre », et recompiler le projet.