JBossでwarの外に設定ファイルを置く

foo.propertiesとかbar.xmlなどの設定ファイルを作っても,これをwarの中に固めて入れてしまうと,修正が大変。せっかく設定ファイルで変更できるようにしたメリットが無くなってしまう。そこでwarの外に設定ファイルを置いてそこから読み込むことにする。
JBossで設定ファイルを置くのに使えそうなのは(JBOSS_HOME)/server/default/confである。ここに設定ファイルを置くことにしよう。
サーブレットコンテナのクラスローダは普通のJavaのクラスローダとは異なる検索パスを持っている。JBossのクラスローダもきっとそうだろう。それにこのディレクトリにはlog4j.xmlがあったりするので,きっと読めるはずだ。と信じてプログラム開始。こんな感じ。

    ClassLoader cl = this.getClass().getClassLoader();
    PropertiesConfiguration pConf = new PropertiesConfiguration();
    InputStream is = cl.getResourceAsStream("pf.properties");
    if (is != null) {
        pConf.load(is);
        // いろいろ
    }

PropertiesConfigurationはJakarta Commonsのひとつで設定ファイルの管理用ライブラリ。プロパティファイルでもxmlファイルでも扱えるし,

String value = pConf.getString("key");

とキーに対応する値のクラスが分かっていれば(たいてい分かっている),直接そのクラスで取得できたりするし,なかなか便利です。