基础设施
- JSF 2.1.17(Mojarra)
- Hazelcast 3.3
- JBoss EAP 6.3
背景
- 一个名为
Login
的Session scoped
bean,其中包含一个字段email
。 - 在没有
Hazelcast
的情况下部署时,bean仅被实例化一次并保留其值。 - 当将Hazelcast添加到应用程序中时,我们注意到
Login
bean在每个执行阶段都会被反序列化(内存地址会发生变化,并且设置的电子邮件不会被保留)。
我们是如何发现的
登录页面显示“字段为空”的消息,而实际上它们已经设置。然后我们进一步调试发现,该bean在每个阶段都会被重新实例化(使用PhaseListener)。
请注意,如果我们将bean范围更改为请求或视图,则可以识别字段,但在实际上下文中这不是一个选项。
Hazelcast是否覆盖了JSF处理会话作用域bean的方式?如果没有,为什么会发生这种情况?
编辑:该bean确实实现了Serializable