ResourceBundle.getBundle

Ja-Jakarta Project 掲示板 > Tomcatで定義ファイルの読み込みができません


Servlet の設定ファイル(とりあえず properties)はどこに置けばいいだろうか?
CLASSPATH の通っている場所に置いておけばいいか,どうせ Servlet と同じ場所 (/WEB-INF/classes) には CLASSPATH も通っているだろ,と妄想して ClassLoader.getSystemResourceAsStream を使ってみたが,うまくいかなかった.
実際に実行時に System.getProperty("java.class.path") で CLASSPATH を表示してみると,$CATALINA_HOME/bin/bootstrap.jar だけだった.つまり,狙った場所に CLASSPATH が通っておらず,取得したはずの InputStream が null になっていた.


結局,

private static final String PROPERTIES_BASENAME = "test";

ResourceBundle bundle = PropertyResourceBundle.getBundle(PROPERTIES_BASENAME);
String value1 = bundle.getString("key1");
String value2 = bundle.getString("key2");

として,/WEB-INF/classes に test.properties を置いてうまくいったのだが,何か納得いかない.
というのは,説明 にあるように ResourceBundle.getBundle も内部的に ClassLoader.getResource を使っているので,同様に CLASSPATH の問題が起こるのではないか,と思うからだ.
ただ,よく見ると,ClassLoader.getResource と ClassLoader.getSystemResource はリソースの検索に使用するクラスローダが違うらしい.では,ResourceBundle.getBundle 内の ClassLoader.getResource はどのクラスローダを使っているのだろうか?