2010-08-11 67 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; 

    } 
}