实现websocket时出现500内部服务器错误

时间:2016-10-26 13:19:12

标签: java spring-mvc websocket

1.我的index.jsp

var ws = null;

        ws = new WebSocket('ws://localhost:8080/AngularjsPrac/messages');
        ws.onmessage = function(data){
            alert(data.data);
        };

        function connect()
        {
          ws.send("Hi there");

        }

2.servlet-dispatcher.xml

<websocket:handlers>
        <websocket:mapping handler="messageHandler" path="/messages"/>
    </websocket:handlers>

    <bean class="com.perennialsys.angularjs.handler.MessageHandler" id="messageHandler"/>

3.Message处理程序 处理程序映射在调度程序servlet中。

//Storing all session on list
    public class MessageHandler extends TextWebSocketHandler{

        private List<WebSocketSession> socketSessions = new CopyOnWriteArrayList<WebSocketSession>();

        @Override
        public void afterConnectionEstablished(WebSocketSession socketSession){
            socketSessions.add(socketSession);
        }

        @Override
        protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {

            for(WebSocketSession webSocketSession : socketSessions){
                webSocketSession.sendMessage(message);
            }
        }
    }

4.Error

The error i got is mentioned below.
2016-10-26 18:27:51 DEBUG DispatcherServlet:989 - Could not complete request
org.springframework.web.socket.server.HandshakeFailureException: Uncaught failure for request http://localhost:8080/AngularjsPrac/messages; nested exception is java.lang.NoSuchMethodError: org.springframework.web.util.WebUtils.isSameOrigin(Lorg/springframework/http/HttpRequest;)Z
    at org.springframework.web.socket.server.support.WebSocketHttpRequestHandler.handleRequest(WebSocketHttpRequestHandler.java:174)
    at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:51)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoSuchMethodError: org.springframework.web.util.WebUtils.isSameOrigin(Lorg/springframework/http/HttpRequest;)Z
    at org.springframework.web.socket.server.support.OriginHandshakeInterceptor.beforeHandshake(OriginHandshakeInterceptor.java:93)
    at org.springframework.web.socket.server.support.HandshakeInterceptorChain.applyBeforeHandshake(HandshakeInterceptorChain.java:59)
    at org.springframework.web.socket.server.support.WebSocketHttpRequestHandler.handleRequest(WebSocketHttpRequestHandler.java:163)
    ... 27 more

0 个答案:

没有答案