gpt4 book ai didi

java - 如何更改 hdiv 中的缓存删除策略

转载 作者:太空宇宙 更新时间:2023-11-04 08:21:36 24 4
gpt4 key购买 nike

我正在使用HDIV用于 Java Web 应用程序的 Web 应用程序安全框架。每个新的网页请求都会生成 hdiv 内部安全信息,这些信息会被缓存并用于安全检查。

我有以下场景:

我有一个订单页面,当向购物车添加商品或从购物车中删除商品时,该页面会弹出 2 秒钟的确认页面。

弹出 50 次后,底层订单页面将从缓存中删除,因此应用程序中会出现错误。

有人知道如何影响 hdiv 缓存删除策略以保持基页存活吗?

一种解决方法是将 org.hdiv.session.StateCache.maxSize 从 50 增加到 500。

但这只能治标,不能治本。

更新:

使用@rbelasko解决方案我成功使用原始的 org.hdiv.session.StateCache 将 maxSize 更改为 20,并在调试日志中验证缓存条目在 20 个条目后被消除。

当我将其更改为使用我自己的实现时,它不起作用

Bean定义

<bean id="cache" class="com.mycompany.session.StateCacheTest" singleton="false" 
init-method="init">
<property name="maxSize">
<value>20</value>
</property>
</bean>

我自己的类(class)

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>

对我系统中的缓存大小没有影响。

最佳答案

您可以创建自定义 IStateCache接口(interface)实现。

使用 HDIV 显式配置(不使用 HDIV 的新自定义架构),这是“缓存”bean 的默认配置:

<bean id="cache" class="org.hdiv.session.StateCache" singleton="false" 
init-method="init">
<property name="maxSize">
<value>200</value>
</property>
</bean>

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

问候,

罗伯托

关于java - 如何更改 hdiv 中的缓存删除策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9431309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com