누구나 아파치 공유 데이터베이스 구성 오브젝트에 동적 재로드 메커니즘을 개발 했습니까?아파치 데이터베이스 구성의 동적 재로드
2
A
답변
3
DatabaseConfiguration이 데이터베이스의 값을 캐시하지 않기 때문에 실제로 이것은 필요하지 않습니다. 속성을 가져올 때마다 요청이 수행됩니다. 향상된 성능을 위해 값을 캐시하는 RFE가 있으며 실제로 리로드 메커니즘이 필요합니다.
0
아파치 평민 데이터베이스 구성은 캐싱을 지원하지 않습니다.
캐싱을 지원하도록 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;
}
}
나는이 티켓이 '05 년에 어떻게 소급되었는지를 알고 있습니다. 아직 8 년 후 ... :) –
어떤 도움을 환영합니다 :) –
:) 사실은 당분간 캐시 제공자 (ehcache)로이 클래스를 래핑했습니다. 그러나 이것은 lib에 의해 제공되는 것이 굉장 할 것입니다! –