1

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>

システムのキャッシュサイズには影響しませんでした。

4

1 に答える 1

1

カスタムIStateCacheインターフェイス実装を作成できます。

HDIV の明示的な構成を使用する (HDIV の新しいカスタム スキーマを使用しない) これは、「キャッシュ」Bean の既定の構成です。

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

独自の実装を作成し、要件に合った戦略を実装できます。

よろしく、

ロベルト

于 2012-02-24T20:32:41.513 に答える