我麻烦让我的应用程序到tomcat 8.我使用websocket和spring 4,但我不想使用春季内部STOMP机制,所以我决定遵循this教程并实施我的websocket例程是我的方式。 我现在开发几个星期了,并且总是用码头(maven码头插件)进行测试,一切正常。但是现在我想将我的应用程序部署到运行java 8和CentOS上的tomcat 8.0.15的生产服务器上,但它不起作用。Tomcat 8和Websocket
这里是源代码:
@WebListener
public class MyApplication implements ServletContextListener {
private final static String SERVER_CONTAINER_ATTRIBUTE = "javax.websocket.server.ServerContainer";
@Override
public void contextInitialized(ServletContextEvent sce) {
ServletContext container = sce.getServletContext();
final ServerContainer serverContainer = (ServerContainer) container.getAttribute(SERVER_CONTAINER_ATTRIBUTE);
try {
serverContainer.addEndpoint(new MyEndpointConfig(MyEndpoint.class, "/wstest"));
} catch (DeploymentException e) {
e.printStackTrace();
}
}
}
而这里的错误:
java.lang.ClassCastException: org.apache.tomcat.websocket.server.WsServerContainer cannot be cast to javax.websocket.server.ServerContainer
at my.package.contextInitialized(MyApplication.java:23)
第23行是我做演员到ServerContainer。 我想“container.getAttribute(SERVER_CONTAINER_ATTRIBUTE)”返回null,因此转换失败,但是为什么?
这一切都工作正常与Jetty 9.2.3。我已经在Windows 7上安装了本地的tomcat 8(最新的8.0.18)和最新的JDK 8,并且测试了相同的行为。
你有什么想法如何解决这个问题?
非常感谢你!
[以下错误报告](https://jira.spring.io/browse/SPR-11617)看起来相关。 – Appleman1234 2015-02-09 09:24:49
是的,这非常有帮助。我发现ISSE: javax.websocket javax.websocket-API 1.0 提供 我没有在pom.xml添加所提供的范围 –
mesx
2015-02-09 14:08:58