我在群集中的两台机器上部署了JBoss应用程序。当用户登录到一个应用程序服务器时,我已验证会话是否已复制到另一个群集(使用相同的cookie登录到另一个服务器确认此情况)。
JBoss分别使用Infinispan和JGroups自动处理此复制,以进行缓存和消息传递。我的问题是:如何在第二台服务器中获取每个复制会话的句柄?
现在管理HttpSession
实例的正常方法是实现HttpSessionListener
接口,只要添加新会话,就会调用sessionCreated(HttpSession s)
方法。这适用于第一台服务器,但这在第二台服务器上不起作用,因为:服务器1中的会话被序列化,复制,然后在第二台服务器中反序列化,绕过构造函数,因此不允许会话注册HttpSessionListener
听众。
是否有另一种可能性来获取会话的句柄,因为它被复制了?我是否可以听取反序列化事件(甚至可能)或做其他事情?