JBoss EAP 6.1 上的 Atmosphere 和 WebSocket
Posted
技术标签:
【中文标题】JBoss EAP 6.1 上的 Atmosphere 和 WebSocket【英文标题】:Atmosphere and WebSocket on JBoss EAP 6.1 【发布时间】:2014-05-27 15:37:33 【问题描述】:我正在尝试在 JBoss EAP 6.1 上部署标准的Atmosphere 聊天示例(您可以找到源代码here 和war here)。
Atmosphere 应该在可用时处理 WebSocket 协议,或者在不可用时回退到长轮询。
聊天有效,但使用长轮询:JBoss 似乎不支持 WebSocket,但是 (here) 建议通过添加 Tomcat Native Connector(又名 APR)来启用它。
我没有运气按照这些说明进行操作。
这就是我部署那场战争时发生的事情(我自己构建它不会改变任何东西):
客户端:Google Chrome 35.0.1916.114
一加载页面:
Invoking executeWebSocket atmosphere.js:3002
Using URL: ws://localhost:8080/atmosphere-chat/chat?X-Atmosphere-tracking-id=0&X-Atmosphere-Framework=2.2.0-javascript&X-Atmosphere-Transport=websocket&X-Atmosphere-TrackMessageSize=true&X-Cache-Date=0&Content-Type=application/json&X-atmo-protocol=true atmosphere.js:3002
WebSocket connection to 'ws://localhost:8080/atmosphere-chat/chat?X-Atmosphere-tracking-id=0&X-Atmosphere-Framework=2.2.0-javascript&X-Atmosphere-Transport=websocket&X-Atmosphere-TrackMessageSize=true&X-Cache-Date=0&Content-Type=application/json&X-atmo-protocol=true' failed: Error during WebSocket handshake: Unexpected response code: 501 atmosphere.js:1060
WebSocket not connected. atmosphere.js:3002
Websocket failed. Downgrading to Comet and resending atmosphere.js:3002
Websocket failed. Downgrading to Comet and resending atmosphere.js:3002
服务器端:JBoss EAP 6.1
部署成功,但是当我加载网页时,JBoss 会输出:
[org.atmosphere.container.JBossWebCometSupport] (http-/127.0.0.1:8080-7) HttpEvent is null, JBoss APR Not Properly installed
[org.atmosphere.cpr.AtmosphereFramework] (http-/127.0.0.1:8080-7) Failed using comet support: org.atmosphere.container.JBossWebCometSupport, error: JBoss failed to detect this is a Comet application because the APR Connector is not enabled.
Make sure atmosphere-compat-jboss.jar is not under your WEB-INF/lib and You must use the atmosphere-native-runtime dependency in order to use native Comet Support
there is no context.xml under WEB-INF Is the NIO or APR Connector enabled?
有人有什么建议吗?
编辑:
正如我所写,我已按照此处的说明进行操作:https://github.com/Atmosphere/atmosphere/wiki/Installing-JBoss-WebSocket-Support,但没有任何改变。 我的主要障碍是安装 APR。谁能详细解释一下如何在windows上安装它?
谢谢!
【问题讨论】:
嗨,你能解决这个问题吗?我也被困在这个问题上。 无法解决,请看下面的答案:) 谢谢:)。它可以在 Widfly8.x 上轻松运行,但对于 Jboss EAP 6.1,仍然不知道如何解决这个问题。尝试了很多事情(将 native 更改为 true,显式添加 jboss natives,修改 context.xml 等)但徒劳无功。不幸的是,我无法离开 EAP 6.1,至少有一年时间。 【参考方案1】:正如here 所说,Jboss 上的 websocket 支持从 EAP 6.3 开始。
但是,我测试了您在 Tomcat 8.0.15 上链接的 .war,它的工作原理非常棒,因此我认为您可以轻松找到另一个支持 Web 套接字的 WS/AS。
希望这会有所帮助。
【讨论】:
【参考方案2】:您需要从 JBoss 服务器启用 APR。 为此,转到 Jboss/Domain/configuration 文件夹并编辑 domain.xml 文件。 寻找 将 native ="false" 设置为 native ="true"。
如果这不起作用,那么对standalone.xml 文件执行相同的操作。
【讨论】:
以上是关于JBoss EAP 6.1 上的 Atmosphere 和 WebSocket的主要内容,如果未能解决你的问题,请参考以下文章
作为部署安装时的 jboss-eap-6.1 oracle 驱动程序定义
如何在 JBoss EAP 6.1 中设置 http 头文件
JBoss EAP 6.1 的 Infinispan 超时异常