Spring 4 MVC和Websockets – 没有合适的默认RequestUpgradeStrategy

我需要Websockets在我的应用程序中进行实时更新。 所以我找到了这个例子,并在这里一步一步地做到了 。 我完成了教程,最后在启动应用程序时遇到了这个exception:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 

‘org.springframework.web.socket.server.support.DefaultHandshakeHandler#0’:bean的实例化失败; 嵌套exception是org.springframework.beans.BeanInstantiationException:无法实例化bean类[org.springframework.web.socket.server.support.DefaultHandshakeHandler]:构造函数抛出exception; 嵌套exception是java.lang.IllegalStateException:找不到合适的默认RequestUpgradeStrategy

我搜索了很多,但我找不到解决方案。

我希望有人可以帮助我,提前谢谢。

最好的问候,帕特里克

我设法通过添加以下maven依赖项来解决此问题:

  org.apache.tomcat.embed tomcat-embed-websocket 7.0.52  

正如Craig Otis指出的那样,如果您计划部署到Tomcat,则应使用test来确保不在构建工件中包含依赖项。

我在使用嵌入式Jetty在IDE中运行websockets时遇到了这个问题,在将以下依赖项添加到pom.xml之后修复了此问题

   org.eclipse.jetty.websocket websocket-client 9.3.4.RC0    org.eclipse.jetty.websocket websocket-server 9.3.4.RC0    org.eclipse.jetty jetty-client 9.3.4.RC0   

您使用的Tomcat版本太旧了。

升级tomcat。 http://tomcat.apache.org/download-70.cgi

我也面临这个问题,遇到一个链接,看看这是否有用https://github.com/rstoyanchev/spring-websocket-portfolio/issues/21

exception意味着DefaultHandshakeHandler找不到支持的服务器(例如Tomcat 7&8,Jetty 9)。 请参阅此处的javadoc。

我花了很多时间去寻找解决方案,我发现spring websocket只能运行Tomcat 7.0.47 +,Jetty 9.1 +,GlassFish 4.1 +,WebLogic 12.1.3+和Undertow 1.0+(以及WildFly) 8.0+)根据此处显示的spring文档http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html ,请尝试更新您的应用服务器