Java Web アプリケーションにHDIV Web アプリケーション セキュリティ フレームワークを使用しています。新しい web-page-request ごとに、キャッシュされてセキュリティ チェックに使用される hdiv 内部セキュリティ情報が生成されます。
次のシナリオがあります。
何かがカートに追加またはカートから削除されたときに、確認ページを 2 秒間ポップアップする注文ページが 1 つあります。
ポップアップが 50 回表示されると、下にある注文ページがキャッシュから削除されるため、アプリでエラーが発生します。
ベースページを維持するために hdiv キャッシュ削除戦略に影響を与える方法を知っている人はいますか?
1 つの方法は、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" ... />
ビーン設定定義
<property name="maxSize">
<value>20</value>
</property>
システムのキャッシュサイズには影響しませんでした。