我正在使用HDIV Web应用程序安全框架来处理java Web应用程序。每个新的网页请求都会生成缓存并用于安全检查的hdiv内部安全信息。
我有以下szenario:
我有一个订单页面,当在购物车中添加或删除某些内容时会弹出确认页面2秒钟。
在50个弹出窗口之后,从缓存中删除了底层订单页面,因此应用程序中出现错误。
是否有人知道如何影响hdiv缓存删除策略以保持基页存活?
一种方法是将org.hdiv.session.StateCache.maxSize从50增加到500.
但这只会治愈症状,而不是根本原因。
更新
使用@rbelasko解决方案
我成功地使用原始的org.hdiv.session.StateCache
将maxSize更改为20,并在调试日志中验证了20个条目后cachentries被解除。
当我改变它以使用我自己的实现它没有工作
Bean定义
<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-settings定义
<property name="maxSize">
<value>20</value>
</property>
对我系统中的cachesize没有影响。
答案 0 :(得分:1)
您可以创建自定义IStateCache接口实现。
使用HDIV显式配置(不使用HDIV的新自定义架构),这是“cache”bean的默认配置:
<bean id="cache" class="org.hdiv.session.StateCache" singleton="false"
init-method="init">
<property name="maxSize">
<value>200</value>
</property>
</bean>
您可以创建自己的实施并实施符合您要求的策略。
此致
罗伯特