Tomcat 7和8的Websockets

时间:2017-08-15 17:11:38

标签: java tomcat websocket

在Tomcat中实现WebSockets的方法在版本7和版本8之间发生了变化。

Tomcat 7:

public class ChatWebSocketServlet extends WebSocketServlet { ... }

Tomcat 8:

@ServerEndpoint(value = "/chat")
public class ChatAnnotation { ... }

我想知道的是,是否可以将两个版本构建到单个应用程序中。我已经尝试了

@ServerEndpoint(value = "/chat")
public class ChatServlet extends WebSocketServlet { ... }

但它永远不会编译两者 websocket-api.jar和catalina.jar。我想可以检查一个类是否被定义并在运行时使用其中一个,但是我不确定如何准确地实现它,或者它是否是一个好主意。&lt; < / p>

我可以将websocket-api.jar打包到最终产品中,但是会不会将问题部署到Tomcat 7?

1 个答案:

答案 0 :(得分:1)

来自Tomcat 7 Tomcat 8文档

  

应用程序开发

     

Tomcat实现JSR-356定义的Java WebSocket 1.1 API。

来自Tomcat 7文档:

  

不推荐使用的专有API

     

在开发JRS-356之前,Tomcat提供了专有的WebSocket API。此API已在Tomcat 7中弃用,并且将在   在Tomcat 8中删除。不太可能有任何进一步的发展   除了错误修复之外,这个专有API。

     

有关此API的信息,请参阅org.apache.catalina.websocket包的Javadoc。 Javadoc页面不是   包含在Tomcat二进制发行版中。要在本地查看它们   必须下载并安装&#34;完整文档&#34;分配,   或者从源代码构建它。您也可以在Apache Tomcat上阅读此内容   网站。从WebSocketServlet类开始。

我怀疑您可以同时使用这两种实现,但根据文档,您不应该在两个版本上运行JSR-356特定实现时遇到问题。请远离专有实施。

由于Tomcat 7的第一个版本于2010/2011发布,但JSR-356于2013年首次发布,有些古老版本没有标准的websocket实现,我将离开向您了解JSR-356实现首先包含在哪个版本中。但是,由于错误修正,包括与安全相关的错误修正,您应该只有时间来支持最新版本的Tomcat 7.不要担心那些几年没有更新其服务器软件的人。 / p>