2012-02-24 45 views
1

我正在使用針對java web應用程序的HDIV Web應用程序安全框架。每個新的Web頁面請求都會生成緩存的並用於安全檢查的hdiv內部安全信息。如何在hdiv中更改緩存清除策略

我有以下SZENARIO:

我有東西時加入,或從購物車中移除彈出2秒鐘確認頁的一個訂購頁面。

50個彈出窗口之後,將下層訂單頁面從高速緩存中刪除,並因此在應用程序中發生錯誤。

是否有人知道如何影響hdiv緩存清除策略,以保持基頁活着?各地

的方法之一是增加org.hdiv.session.StateCache.maxSize從50到500

但這只是治標而不是根本原因。

更新:

使用@rbelasko解決方案 我succeded使用原來org.hdiv.session.StateCache至maxSize更改爲20,並在驗證調試日誌,該cachentries在經過20項駁回。

當我改成了用我自己的實現它沒-T工作

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:

,而我是無法通過春天,我能作出這個錯誤加載不同的IStateCache實現不太可能使用

<hdiv:config ... maxPagesPerSession="200" ... /> 

豆設置定義

<property name="maxSize"> 
    <value>20</value> 
</property> 

對我係統中的cachesize沒有影響。

回答

1

您可以創建一個自定義的IStateCache接口實現。

使用HDIV明確的配置(不使用HDIV的新的自定義模式),這是一個「緩存」豆默認配置:

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

你可以創建自己的實現和實施適合您需求的策略。

問候,

羅伯託

+0

你能不能給我一個例子,如何用我自己的實現'com.mycompany.session.StateCacheTest'取代'org.hdiv.session.StateCache'?看到我更新的問題。 – k3b 2012-02-27 13:38:42

+0

你使用HDIV自定義模式(hdiv :)嗎?如果您使用顯式配置(舊樣式),則必須僅定義一個「緩存」bean,並且它應該可以工作。換句話說,刪除defaulta緩存bean並添加你的bean。 – rbelasko 2012-02-28 17:03:23

+0

我使用的hdiv 2.1.0.RC2沒有參數。升級到更高版本後,這工作得很好。非常感謝 – k3b 2012-03-05 15:09:50