Java에서는 웹 응용 프로그램에서 동적 리소스 번들을 다시로드하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/156586

  •  03-07-2019
  •  | 
  •  

문제

FMT : SetBundle을 사용하여 데이터베이스에서 리소스 번들을로드합니다 (ResourceBundle 클래스를 확장하여이를 수행했습니다). 데이터베이스에서 값을 수정하면 웹 서버를 다시로드하여 웹 앱에 새 값을 표시해야합니다.

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

(우리는하다 ~ 아니다 항상 데이터베이스에서 값을 찾아보고 싶지만 예를 들어 특수 'admin'URL을 호출하여 캐시를 무효화하고 싶습니다).

편집 : JDK 1.4를 사용하고 있으므로 해당 버전의 솔루션을 선호합니다. :)

도움이 되었습니까?

해결책

다른 사람들이 의견에서 지적했듯이, 당신은 봄, 특히 repoadableresourcebundleMessagesSource.

다른 팁

JDK 1.6을 사용하는 경우 콜백 메소드를 사용할 수 있습니다. getTimeToLive() 그리고 needsReload() 안에 ResourceBundle.control 번들 캐시에 데이터베이스에서 새 값을로드 해야하는지 제어합니다.

먼저 연장되는 클래스를 만들 수 있습니다 ReloadableResourceBundleMessageSource 내부 클래스 보호 방법을 노출시키기 위해 getProperties. 이 메소드는 동시 맵을 반환합니다 PropertiesHolder 물체. 둘째, 웹 구성 클래스에서 해당 확장 클래스의 Bean을 구성해야합니다. 이제 서비스 또는 비즈니스 계층에서 MessageSource를 사용할 수 있습니다. 참조 링크는 다음과 같습니다 다시로드 가능한 메시지 소스 번들을 구성하십시오

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top