java - wildfly 集群上的 Websocket 问题

标签 java websocket cluster-computing wildfly-8 mod-cluster

我在我的 Spring-JSF 集成应用程序中使用 richfaces a4j:push。我可以在 wildfly 8.0.0 的非集群环境中使用 websocket 将消息推送到浏览器。 当我使用 httpd 集群在 redhat enterprise 7.0 上的 wildfly8.0.0 上部署应用程序时,推送消息无法正常工作。

我在集群环境中得到以下错误:

17:15:22,862 ERROR [io.undertow.request] (default task-3) UT005023: Exception handling request to /star/__richfaces_push: java.lang.IllegalStateException: UT000077: The underlying transport does not support HTTP upgrade.

我的集群配置了 mod_cluster,引用 document

当我查找有关错误 UT000077 的详细信息时,它说“Apache httpd 不支持开箱即用的 HTTP 升级”,我了解 websocket 通信需要 HTTP 升级。建议使用 mod_proxy_wstunnel。但是,此配置的详细信息不可用。

非常感谢任何指示/建议。

最佳答案

在回答这个问题时,AJP [这是默认的] 不支持 HTTP 升级,因此不支持 websocket。

如果你切换到 HTTP websocket 将工作。

您需要做以下更改才能切换到 AJP

改变

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so

#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_http_module modules/mod_proxy_http.so

[注释掉 proxy_ajp_module 并添加 proxy_http_module]

在 modcluster 子系统中

改变

<subsystem xmlns="urn:jboss:domain:modcluster:1.2">
<mod-cluster-config advertise-socket="modcluster" connector="ajp">
<dynamic-load-provider>
<load-metric type="cpu"/>
</dynamic-load-provider>
</mod-cluster-config>
</subsystem>

<subsystem xmlns="urn:jboss:domain:modcluster:1.2">
<mod-cluster-config advertise-socket="modcluster" connector="default">
<dynamic-load-provider>
<load-metric type="cpu"/>
</dynamic-load-provider>
</mod-cluster-config>
</subsystem>

[“default”是http监听器的名字]

你还需要在你的 httpd 中加载 mod_proxy_wstunnel

关于java - wildfly 集群上的 Websocket 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28321511/

相关文章:

java - 这是一个有效的十六进制值吗?

node.js - 如何将 websocket 连接代理到 NodeJS 中的其他 websockets

synchronization - RabbitMQ:如何创建同步集群

node.js - 将 socket.io 与集群一起使用?

java - AWS Lambda 中的 Spring Cloud 配置服务器

java - 是否可以使用正则表达式在完全括号表示中查找树的根?

java - JNA通过java找不到dll文件中指定的程序

node.js - Socket.io - 服务器监听特定房间

javascript - 如何从 node-xmpp 请求中获取响应?

scripting - 从指定节点执行Liferay脚本