在Tomcat 7中运行Java EE 7 WebSockets

5

Java EE 7已经发布,我特别喜欢其中的一个功能-标准Websockets。目前我在使用Tomcat 7,有没有办法将Java EE 7 Websockets集成到我的Tomcat 7中呢?我已经在Tyrus Websocket的文档中搜索过了,但是没有找到相应的解决方案。

更新:Tomcat 7.0.47已经支持Websocket了,太棒了!

1个回答

5
无法将Tyrus WebSocket实现直接用于Tomcat 7。虽然在Tomcat 8中可能会工作,但由于WebSocket存在一些问题,因此直接基于Servlet 3.1 API实现WebSocket就不可能,除非Servlet 3.1实现弯曲一些规则(顺带一提,我将在今年的JavaOne上谈论这个问题)。据我所知,大多数实现都使用容器特定的API来解决这些问题(以及获得更好的性能)。
Tomcat的Java WebSocket 1.0(JSR-356)实现目前仅在Tomcat 8中可用。计划一直是在该实现稳定后将其回移至Tomcat 7。我认为这一点已经很接近了。该实现已经在客户端和服务器端通过Autobahn TestSuite测试了一段时间。最近几天有些人进行了压力测试,并发现了一些问题 - 所有这些问题都已经被解决了。
今天,您需要从源代码构建Tomcat 8才能获得基于Tomcat的JSR-356实现。在未来的几个版本中(每月发布一个新版本),JSR-356实现也将在Tomcat 7中可用。
如果您不想从源代码构建,我认为Glassfish是当前JSR-356实现的唯一选择。我知道Jetty和JBoss也在开发相关实现,但我不知道它们距离完成还有多远。

你知道JSR-356什么时候会在Tomcat 7中可用吗? - Nestor Hernandez Loli
最佳猜测是下一个发布版本,应该是7.0.44,在九月初发布,但这只是一个猜测。很多事情都可能改变这个计划。 - Mark Thomas
基本上,Tomcat已经扩展为一个Servlet容器,并且现在还将实现JSR-356? - Karl Kildén
Tomcat一直实现了Servlet和JSP规范。当EL规范从JSP规范中分离出来时,它增加了对EL规范的支持,现在Tomcat正在添加对WebSocket规范的支持。 - Mark Thomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接