【发布时间】:2017-04-06 04:46:13
【问题描述】:
我在 Payara 服务器上实现了一个集群,其中 3 个节点(A、B 和 C)作为独立实例。 我使用 HAproxy 作为负载均衡器,一切正常。
我在我的项目中添加了 WebSockets,当客户端请求 websocket 时,HAProxy 会自动从 HTTP 切换到隧道模式。
我的问题是这样的: 无论连接的节点如何,我都需要检索 websocket 会话。例如: “我有 3 个用户连接到应用程序。用户 1 和用户 2 连接到节点 A。用户 3 是 连接到节点 B。节点 C 上发生需要通知用户 1 和 3 的事件。但我还没有参加 Node C 用户 1 和用户 2 会话。”
我尝试使用 Hazelcast 分布式列表在用户连接处存储会话(OnOpen 方法)。但是当我在列表中调用“add”方法时,这会引发 HazelcastSerializationException,因为 Tyrus 会话对象不可序列化。
我该如何解决我的问题?
谢谢
【问题讨论】:
-
您是否尝试过编写自己的自定义序列化程序方法? stackoverflow.com/a/7290812/212224
-
是的,我试过了,但效果不好。我正在尝试使用 Hazelcast Executor Service,但它会导致 com.hazelcast.nio.serialization.HazelcastSerializationException: java.lang.ClassNotFoundException: com.MyTask .
标签: java websocket cluster-computing hazelcast payara