我正在尝试在JBoss EAP 6.1上部署标准的Atmosphere聊天示例(您可以在这里找到源代码和war)。
Atmosphere应该在可用时处理WebSocket协议,或者在不可用时回退到长轮询。
Chat工作,但是使用长轮询:JBoss似乎不支持WebSocket,但是(这里)有一个建议的方法通过添加Tomcat本机连接器(又名APR)来启用它。
我按照指示去做,但运气不好。
这就是当我部署war时发生的情况(自己构建它不会改变任何东西):
客户端: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
部署成功,但是当我加载web页面时,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上安装它?
谢谢!
如上所述,Jboss从EAP 6.3开始支持websockets。
然而,我测试了你在Tomcat 8.0.15上链接的。war,它像一个魅力,所以我认为你可以很容易地找到另一个支持web套接字的WS/AS。
希望有帮助。
您需要从JBoss服务器启用APR。为此,转到Jboss/Domain/configuration文件夹并编辑Domain .xml文件。找到将native ="false"改为native ="true"。
如果这不起作用,那么对standalone.xml文件执行同样的操作。