如何在艾滋病毒中改变缓存删除策略

时间:2012-02-24 13:08:12

标签: java security spring hdiv

我正在使用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没有影响。

1 个答案:

答案 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>

您可以创建自己的实施并实施符合您要求的策略。

此致

罗伯特