我麻煩讓我的應用程序到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