Java EE 7 已经发布,我喜欢的功能之一是标准 Websockets。目前我在 Tomcat 7 中工作,有没有办法将 Java EE 7 Websockets 集成到我的 Tomcat 7 中?我在 Tyrus Websocket 的文档中搜索它没有成功
更新:Tomcat 7.0.47 带有 Websocket 支持,是的,宝贝!
不可能采用 Tyrus WebSocket 实现并在 Tomcat 7 中使用它。它可能在 Tomcat 8 中工作,但不太可能,因为 WebSocket 存在一些问题,这意味着不可能直接在 Servlet 之上实现 WebSocket 3.1 API,除非 Servlet 3.1 实现改变了一些规则。(顺便说一句,我将在今年的 JavaOne 上讨论这个问题)。据我所知,大多数实现都使用容器特定的 API 来解决这些问题(并获得更好的性能)。
Tomcat 的 Java WebSocket 1.0 (JSR-356) 实现目前仅在 Tomcat 8 中可用。一旦它稳定,它一直计划将该实现向后移植到 Tomcat 7。我认为这一点很接近。一段时间以来,该实现已经通过了客户端和服务器的 Autobahn TestSuite。在过去的几天里,一些人一直在对其进行压力测试并发现了一些问题 - 所有这些问题都已得到修复。
今天,您需要从源代码构建 Tomcat 8 以获得基于 Tomcat 的 JSR-356 实现。在接下来的几个版本中(大约每个月都有一个新的 Tomcat 7 版本),JSR-356 实现也将在 Tomcat 7 中可用。
如果您不想从源代码构建,我相信 Glassfish 是目前 JSR-356 实现的唯一选择。我知道 Jetty 和 JBoss 正在研究一个,但我不知道他们离完成有多近。