クラスローダを使用して自動リロード
google:クラスローダ 自動リロード
google:classloader autoreload
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=12&topic=25089
自動でのリロードを行わせるには、
コード:
in = new BufferedInputStream(new FileInputStream("prop.properties"));
ではなく、
コード:
ClassLoader loader = Thread.currentThread().getContextClassLoader();
in = new BufferedInputStream(loader.getResourceAsStream("prop.properties"));という様に、クラスローダでロードさせます。
余談になりますが、Strutsでも同様な方法でstruts-config.xmlの更新時に
自動リロードが可能になります。通常struts-config.xmlは、FileInputStreamで読み込まれているので
自動リロードの対象となりませんが、
ActionServletのinitメソッドをオーバーライドして、
ClassLoaderから1度だけgetResourceで参照してしまいましょう。
更新するとリロードが行われます。クラスパスのルートより上でも、../等で参照ができます。
これってservletAPIの仕様?
servlet,getContextClassLoader(), コンテキストクラスローダー,
再読み込み間隔 ,reload などで検索掛けると コンテナ依存な情報は出てくるが…