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,则应使用
来确保不在构建工件中包含依赖项。
我在使用嵌入式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 ,请尝试更新您的应用服务器