Javaでは、Webアプリケーションでリソースバンドルを動的にリロードする方法は?

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

  •  03-07-2019
  •  | 
  •  

質問

データベースからリソースバンドルを読み込むためにfmt:setBundleを使用しています(それを行うためにResourceBundleクラスを拡張しました)。 データベースの値を変更するとき、Webサーバーをリロードして、新しい値をWebアプリに表示する必要があります。

Webサーバーを再起動せずに新しい値を使用する簡単な方法はありますか?

(データベースから常に値を検索することはしないですが、特別な「admin」URLを呼び出すなどしてキャッシュを無効にしたい)

EDIT:JDK 1.4を使用しているため、そのバージョンでのソリューションを希望します。 :)

役に立ちましたか?

解決

他の人がコメントで指摘しているように、Spring、特に ReloadableResourceBundleMessageSource

他のヒント

JDK 1.6を使用している場合、getTimeToLive()および needsReload()を使用できます。 .com / javase / 6 / docs / api / java / util / ResourceBundle.Control.html "rel =" noreferrer "> ResourceBundle.Control は、データベースからの新しい値でバンドルキャッシュをロードする必要があるかどうかを制御します。 。

最初に、 ReloadableResourceBundleMessageSource から拡張するクラスを作成して、 getProperties という内部クラス保護メソッドを公開できます。このメソッドは、 PropertiesHolder オブジェクトから同時マップを返します。次に、Web構成クラスでその拡張クラスのBeanを構成する必要があります。これで、サービスまたはビジネスレイヤーでmessageSourceを使用できます。参照リンク再読み込み可能なメッセージソースバンドルを設定

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top