2008-10-01 3 views
8

우리는 fmt : setBundle을 사용하여 데이터베이스에서 리소스 번들을로드합니다 (이를 위해 ResourceBundle 클래스를 확장했습니다). 데이터베이스의 값을 수정할 때 웹 응용 프로그램에 새 값을 표시하려면 웹 서버를 다시로드해야합니다.Java에서 웹 응용 프로그램에서 동적으로 자원 번들을 다시로드하는 방법은 무엇입니까?

웹 서버를 다시 시작하지 않고 새 값을 사용하는 간단한 방법이 있습니까?

(우리는 항상 데이터베이스에서 값을 조회하고 싶지 않아하지만 우리는 특별한 '관리자'URL 호출하여, 예를 들어, 캐시를 무효화하려는)

편집 : 우리는 JDK 1.4를 사용하는을 그래서 나는 그 버전에 대한 해결책을 선호 할 것이다. :) 당신은 JDK 1.6를 사용하는 경우

+0

ResourceBundle 클래스 자체에 너무 익숙하지 않은 경우 Spring의 MessageSource 추상화는 메시지 캐싱 및 다시로드를 포함하여보다 유연한 접근 방식을 제공합니다. 사용자 정의 ResourceBundle을 래핑 할 수 있습니다. 필요한 경우 Spring API 만 사용하면됩니다. – skaffman

+0

답변은 아마도 사용중인 Servlet contains (응용 프로그램 서버)에만 해당됩니다. Tomcat 또는 JBoss. 어느 것? –

+0

우리는 Tomcat을 사용하여 프로덕션 (5.X) 용 Websphere Application Server를 개발하고 있습니다. – paulgreg

답변

7

당신이 번들 캐시 데이터베이스에서 새 값으로로드 할 필요가있는 경우 제어 할 콜백 메소드 getTimeToLive()ResourceBundle.Control에서 needsReload()를 사용할 수 있습니다.

관련 문제