[Rod Johnson] 集群环境下,修改Session数据后要立即rebind一下这个对象

原文说:

"Thus, to ensure correct replication behavior, always rebind a session attribute when the session data is changed."

比如,假设session中现有这样一个对象

   session.setAtrribute("employee", employee);

现在改变一下这个对象的值

   employee.setName("Changed Name");

那么当前服务器节点上, session.getAtrribute("employee").getName() 就自动变成了"Changed Name".

但是Cluster上的其他节点呢? 会不会自动更新? 不同的应用服务器有不同的实现。为了避免不一致的情况,应该在改变employee的值之后重新调用一下 session.setAtrribute("employee", employee),这样的话可以保证其它其他节点跟着一起更新,因为这是Servlet规范所规定的。

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.