gpt4 book ai didi

java - Tomcat 7 和 8 的 Websocket

转载 作者:行者123 更新时间:2023-11-28 22:49:21 25 4
gpt4 key购买 nike

在 Tomcat 7 和 8 之间实现 WebSockets 的方式发生了变化。

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 进行编译。我想可以检查一个类是否已定义并在运行时使用一个或另一个,但我不确定如何准确地实现它,甚至不确定这是否是个好主意。

我可以将 websocket-api.jar 打包到最终产品中,但这会导致将其部署到 Tomcat 7 时出现问题吗?

最佳答案

来自 Tomcat 7 Tomcat 8文档

Application development

Tomcat implements the Java WebSocket 1.1 API defined by JSR-356.

来自 Tomcat 7 文档:

Deprecated proprietary API

Prior to the development of JRS-356, Tomcat provided a proprietary WebSocket API. This API has been deprecated in Tomcat 7 and will be removed in Tomcat 8. There is unlikely to be any further development of this proprietary API apart from bug fixes.

For information on this API, please see the Javadoc for the org.apache.catalina.websocket package. The Javadoc pages are not included with Tomcat binary distributions. To view them locally you would have to download and install "Full documentation" distribution, or build it from sources. You can also read this on the Apache Tomcat web site. Start with the WebSocketServlet class.

我怀疑您能否同时使用这两个实现,但根据文档,您应该不会对在两个版本上运行的 JSR-356 特定实现有任何问题。远离专有实现。

由于 Tomcat 7 的第一个版本发布于 2010/2011,而 JSR-356 于 2013 年首次发布,因此有些旧版本没有标准的 websocket 实现,我会留给您寻找找出首先包含 JSR-356 实现的版本。但是,由于错误修复,包括与安全相关的错误修复,您应该可以轻松地只支持最新版本的 Tomcat 7。不要担心那些多年未更新其服务器软件的用户。

关于java - Tomcat 7 和 8 的 Websocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45697954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com