目前我正在开发使用JSP / Servlet和struts框架的web项目。我们正在使用缓存机制。我想从特定事件的所有活动会话中清除一些会话属性(例如,在刷新缓存的情况下)。那么实现相同的最佳方法是什么?
答案 0 :(得分:4)
让我猜一下......你将缓存中的值存储到会话变量中,对吗?
最简单的方法是每次需要时从缓存中检索值,让缓存管理到期/重新加载等。这是缓存的责任。
换句话说,不要将缓存中的值存储到会话对象中。当您使用缓存时,它将没有用处。
干杯
答案 1 :(得分:1)
您需要提供一个实现HttpSessionActivationListener(服务器api的一部分)接口的类,并将其注册到web.xml中。
然后,您可以跟踪活动会话并使用该信息来访问会话并执行属性更新。实际上,实现类将是一个单例,因此您必须在会话跟踪期间仔细处理同步问题。
当然,如果您的群集环境中有多个节点,则属性更改的传播可能非常复杂。