динамическая перезагрузка в apache DatabaseConfiguration - PullRequest
2 голосов
/ 11 августа 2010

Кто-нибудь разработал механизм динамической перезагрузки для объекта конфигурации базы данных apache commons?

Ответы [ 2 ]

3 голосов
/ 25 июля 2011

На самом деле в этом нет необходимости, поскольку DatabaseConfiguration не кэширует значения из базы данных.Запрос выполняется каждый раз, когда выбирается свойство.Существует RFE для кэширования значений для повышения производительности, и для этого действительно потребуется механизм перезагрузки.

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

0 голосов
/ 15 июля 2013

Конфигурация базы данных apache commons не поддерживает кэширование.

Я расширяю 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;

    }
}
...