2010-08-11 127 views

回答

3

實際上這不是必須的,因爲DatabaseConfiguration不會緩存數據庫中的值。每次獲取屬性時都會執行請求。有一個RFE緩存值以提高性能,這確實需要重新加載機制。

https://issues.apache.org/jira/browse/CONFIGURATION-180

+0

我很喜歡這張票是如何在2005年提交的。還在等待...... 8年後。 :) – 2013-03-05 21:30:43

+0

歡迎任何幫助:) – 2013-03-06 09:58:49

+0

:)我實際上只是暫時用一個緩存提供程序(ehcache)包裝這個類。但是由lib提供的這將是非常棒的! – 2013-03-21 20:32:55

0

Apache的百科全書數據庫配置不支持緩存。

我擴展DatabaseConfiguration以支持緩存,所以它不會一直打到我的數據庫。 至於重新加載,我實例化我的配置,我需要它,並把它扔掉,當我完成它。

MyConfig cfg = new MyConfig("jdbc/configdatabase"); 


public class MyConfig extends DatabaseConfiguration { 

    private WeakHashMap<String,Object> cache = new WeakHashMap<String,Object>(); 

    public MyConfig(String datasourceString,String section) throws NamingException { 
     this((DataSource) new InitialContext().lookup(datasourceString),section); 
    } 

    protected MyConfig(DataSource datasource,String section) { 
     super(datasource, "COMMON_CONFIG","PROP_SECTION", "PROP_KEY", "PROP_VALUE",section); 
    } 

    @Override 
    public Object getProperty(String key){ 
     Object cachedValue = cache.get(key); 
     if (cachedValue != null){ 
      return cachedValue; 
     } 
     Object databaseValue = super.getProperty(key); 
     cache.put(key, databaseValue); 
     return databaseValue; 

    } 
}