我正在为 Java Web 应用程序使用HDIV Web 应用程序安全框架。每个新的网页请求都会生成 hdiv 内部安全信息,这些信息会被缓存并用于安全检查。
我有以下情况:
我有一个订单页面,当有东西被添加到购物车或从购物车中删除时,它会弹出一个确认页面 2 秒钟。
50 个弹出窗口后,底层订单页面将从缓存中删除,因此应用程序中会出现错误。
有谁知道如何影响 hdiv 缓存删除策略以保持基本页面处于活动状态?
一种解决方法是将 org.hdiv.session.StateCache.maxSize 从 50 增加到 500。
但这只会治标不治本。
更新:
使用@rbelasko 解决方案我成功地使用原始org.hdiv.session.StateCache
将 maxSize 更改为 20 并在调试日志中验证缓存在 20 个条目后被解除。
当我将其更改为使用我自己的实现时,它不起作用
豆定义
<bean id="cache" class="com.mycompany.session.StateCacheTest" singleton="false"
init-method="init">
<property name="maxSize">
<value>20</value>
</property>
</bean>
我自己的班级
public class StateCacheTest extends StateCache
{
private static final Log log = LogFactory.getLog(StateCacheTest.class);
public StateCacheTest()
{
log.debug("StateCache()");
}
@Override
public void setMaxSize(final int maxSize)
{
super.setMaxSize(maxSize);
if (log.isDebugEnabled())
{
log.debug("setMaxSize to " + maxSize);
}
}
}
在调试日志中没有来自 StateCacheTest 的条目
有任何想法吗?
更新 2:
虽然我无法通过 spring 加载不同的 IStateCache 实现,但我能够使用
<hdiv:config ... maxPagesPerSession="200" ... />
bean 设置定义
<property name="maxSize">
<value>20</value>
</property>
对我系统中的缓存大小没有影响。