2009-08-25 13 views
2

私は、プロパティファイルからコンテンツを読み込むWebアプリケーションを持っています。このプロパティファイルはいつメモリにロードされますか?すなわち、私がpropファイルにいくつかのコンテンツを含むアプリケーションを配備した後、配備後、私はpropファイルの内容を変更します。変更は反映されるか、再配備する必要がありますか?プロパティファイルのロード

EDIT:アクセサクラスのstaticブロックは、デプロイされたWebアプリケーションの一部であるプロパティファイルからコンテンツを読み取ります。今すぐ配備後、私はプロパティファイルの内容を変更します。アクセサクラスが変更を読み込むか、古い値を使用しますか?

EDIT2:クラスがリロードされたとき、それは確かに新しい変更されたファイルを取り上げるというか(全てでそれがキャッシュされている場合)を展開中のファイルをキャッシュを取る

+2

あなたはもっと具体的になりますか? –

+0

フレームワーク(ストラットなど)はありますか? – adatapost

+0

私はこれがいくつかのWebフレームワークに関係していると仮定しています。一般的なWebアプリケーションでプロパティファイルを使用するだけではありません。あなたの質問を編集して、これがどのような枠組みであるかを述べてください。 – Nate

答えて

2

プロパティファイルがあると仮定すると、 Propertiesクラスによってロードされると、Properties#load()メソッドが呼び出されるとプロパティファイルが一度ロードされます。アプリケーションがリロードを特にサポートしていない場合や、ホットデプロイ時にWebコンテナがWebアプリケーションを再起動しない限り、自動的にリロードされません。

更新:プロパティファイルは静的初期にロードされているのでクラスがリロードされたときに、プロパティファイルがリロードされる(例えば、Webアプリケーションをホットデプロイされたとき)。これをデバッグしたい場合は、静的イニシャライザ内の単純なprintln()でこれが発生したときに表示されます。

+0

ええ、thats正しい。あなたは、プロパティオブジェクトへの参照を保持している場合でも、どのような混乱されたことは – Ajay

+0

クラスがリロードされるとき、それは確かに新しい変更されたファイルを取り上げるというか(全てでそれがキャッシュされている場合)を展開中のファイルをキャッシュを取る、ということでした(静的な)クラス変数では、クラスがリロードされるときにガベージコレクションされます。 –

1

これは、アプリケーションサーバーに依存 - 一般的に、再デプロイする必要があると思います。しかし、一部のアプリケーションサーバーでは、ファイルの変更を検出するとファイルを監視して再デプロイを開始することがあります。 (例として、展開された展開でファイルの変更が検出されたときにTomcatが自動的に再デプロイすると思います。)

0

このファイルがクラスによってロードされている場合は、自分でそれをリロードしません。私があなただったら

私は、与えられた時間間隔で、それはリロードよりも、それをしなかった場合は、ファイルの更新日時が変更されたかどうかのチェックをウェイクアップすることを別のスレッドを持っているでしょう。

関連する問題