Javaでは、Webアプリケーションでリソースバンドルを動的にリロードする方法は?
-
03-07-2019 - |
質問
データベースからリソースバンドルを読み込むためにfmt:setBundleを使用しています(それを行うためにResourceBundleクラスを拡張しました)。 データベースの値を変更するとき、Webサーバーをリロードして、新しい値をWebアプリに表示する必要があります。
Webサーバーを再起動せずに新しい値を使用する簡単な方法はありますか?
(データベースから常に値を検索することはしないですが、特別な「admin」URLを呼び出すなどしてキャッシュを無効にしたい)
EDIT:JDK 1.4を使用しているため、そのバージョンでのソリューションを希望します。 :)
解決
他の人がコメントで指摘しているように、Spring、特に ReloadableResourceBundleMessageSource 。
他のヒント
JDK 1.6を使用している場合、 needsReload()
を使用できます。 .com / javase / 6 / docs / api / java / util / ResourceBundle.Control.html "rel =" noreferrer "> ResourceBundle.Control は、データベースからの新しい値でバンドルキャッシュをロードする必要があるかどうかを制御します。 。
最初に、 ReloadableResourceBundleMessageSource
から拡張するクラスを作成して、 getProperties
という内部クラス保護メソッドを公開できます。このメソッドは、 PropertiesHolder
オブジェクトから同時マップを返します。次に、Web構成クラスでその拡張クラスのBeanを構成する必要があります。これで、サービスまたはビジネスレイヤーでmessageSourceを使用できます。参照リンク再読み込み可能なメッセージソースバンドルを設定