【问题标题】:NoSuchMethodError WebUtils.isValidOrigin Spring websocketNoSuchMethodError WebUtils.isValidOrigin Spring websocket
【发布时间】:2017-02-14 12:16:47
【问题描述】:

这是我在春季为一个简单的 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-dispatcher-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,所以不确定我错过了什么。有人可以指出我正确的方向。谢谢。

【问题讨论】:

    标签: spring websocket spring-websocket


    【解决方案1】:

    尝试如下修改您的 .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>
    

    希望有所帮助!

    【讨论】:

      【解决方案2】:

      您缺少“spring-web”依赖项。 将以下内容添加到您的 pom 中:

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

      您可能还需要运行“干净”目标,然后重新构建项目。

      【讨论】:

        猜你喜欢
        • 2015-03-20
        • 1970-01-01
        • 1970-01-01
        • 2022-12-17
        • 2020-05-08
        • 1970-01-01
        • 2022-06-10
        • 1970-01-01
        • 2023-03-14
        相关资源
        最近更新 更多