题
我正在使用 HDIV Java web应用程序的Web应用程序安全框架。每个新的网页请求都会生成hdiv-内部安全信息,这些信息被缓存并用于安全检查。
我有以下szenario:
我有一个订单页面,当某些东西被添加到购物车或从购物车中删除时,会弹出一个确认页面2秒。
弹出50次后,底层订单页面将从缓存中删除,因此应用程序中发生错误。
有谁知道如何影响hdiv缓存删除策略以保持basepage活动?
一种方法是增加org。hdiv。会议。状态痛。最大尺寸从50到500。
但这只会治愈症状,而不是根本原因。
更新资料:
使用@rbelasko解决方案
我成功地使用了原来的 org.hdiv.session.StateCache
将maxSize更改为20,并在debug-log中验证cachentries在20个条目后被解雇。
当我改变它使用我自己的实现时,它不起作用
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>
对我系统中的缓存没有影响。
解决方案
你可以创建一个自定义 [医]鼻窦炎 接口实现。
使用HDIV显式配置(不使用HDIV的新自定义模式)这是"缓存"bean的默认配置:
<bean id="cache" class="org.hdiv.session.StateCache" singleton="false"
init-method="init">
<property name="maxSize">
<value>200</value>
</property>
</bean>
您可以创建自己的实现并实施符合您要求的策略。
问候,
罗伯托
不隶属于 StackOverflow