我试图将Tyrus部署到Tomcat 8容器,但失败了。根据文档,我应该能够部署包含我的类并支持Tyrus类/依赖项的WAR,并且所有用@ServerEndpoint注释的类都应该在WAR中找到并部署为websocket端点。这条指令使我有些恼火,因为我没有在部署描述符中定义任何类型的过滤器,但决定我必须以某种方式依赖于Tomcat 8对JSR 356的支持中的某种未知魔术。事实证明,没有如此神奇。注意:我使用的是Tomcat 8,因为我的理解是它支持JSR 356 websocket标准。另外,我的JDK是最新的Java 7版本。
我花了一些时间对此进行研究,发现人们可以通过从命令行运行作为Java应用程序的Server(org.glassfish.tyrus.server.Server)实例来成功地使用Tyrus发布websocket端点。我已经尝试过了,并且有效。但是,我无法在Tomcat上成功部署WAR。
是否有人对通过Tomcat 8上的Tyrus成功发布Websocket端点所需的步骤有任何了解?
Apache Tomcat 7.0和更高版本(以及Eclipse Jetty 9.1)具有对JSR-356(又名javax.websocket)的内置支持。
javax.websocket
无需在大多数JEE7容器上使用Tyrus兼容性层。
只需跳过整个Tyrus配置问题,然后使用公开javax.websocket支持的内置功能即可。