我正在使用 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>

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

问候,

罗伯托

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top