- - PR -
複数アプリケーションから共通の設定ファイル
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2003-06-06 11:07
複数アプリケーション(TOMCAT と 普通のJavaアプリケーションなど)から、
共通の設定ファイルを参照したいのですがいい方法が思いつきません。 UNIXでもWINDOWSでも動かしたいので絶対パスでの指定は出来ません。 各アプリケーションのカレントディレクトリにプロパティファイルを置き、 そこに絶対パスで共通のプロパティファイルのパスを記述するという方法を考えていますが、 アプリケーションが増えるたびにこれを追加するのも面倒だし、 共通のファイルのパスが変わったらすべて書き直さねばなりません。 環境変数(java.home, user.dir, user.home等)で うまく出来ないものかと考えていますが、具体的には思いつきません。 何か良い方法はありませんか? |
|
投稿日時: 2003-06-06 12:34
>Shinさんの書き込み (2003-06-06 11:07) より:
複数アプリケーション(TOMCAT と 普通のJavaアプリケーションなど)から、 共通の設定ファイルを参照したいのですがいい方法が思いつきません。 UNIXでもWINDOWSでも動かしたいので絶対パスでの指定は出来ません。 ClassLoader#getResourceAsStreamやResourceBundle#getBundleなどを使うと リソースファイルをクラスパスから検索して読み込んでくれます。 |
|
投稿日時: 2003-06-06 12:48
1.環境変数(java.home, user.dir, user.home等)を使うつもりなら、
選択肢は広いです。 ・java.util.Propertiesが簡単で便利です。 ・ 日本語混じりにするなら、XMLファイルにするのも良いと思われます。 いずれの方法も、ファイルを Unixと Windowsで持ち運びすることが できるでしょう。 2.もし、環境変数を使わないなら、java.util.prefsパッケージが良い でしょう。上記 Propertiesをより便利に使います。(お勧め!!) 3.さらに広域的に使うなら JNDIが良いと思われます。 |
|
投稿日時: 2003-06-06 13:15
getResourceAsStream() で解決できました。
ありがとうございました. |
|
投稿日時: 2003-06-06 14:33
Shinさんの書き込み (2003-06-06 13:15) より:
> getResourceAsStream() で解決できました。 > ありがとうございました. 便乗質問ですが、getResourceAsStream() は、CLASSPATH 環境変数 で定義されているパスを探索するのですよね。<あってますか? とすると、Tomcat からこれを利用する場合、Tomcat 起動時の CLASSPATH 環境変数にあらかじめパスを設定しておかなければ ならないような気がするのですが。 |
|
投稿日時: 2003-06-06 14:51
>とすると、Tomcat からこれを利用する場合、Tomcat 起動時の
CLASSPATH 環境変数にあらかじめパスを設定しておかなければ ならないような気がするのですが。 common/classesとかWEB-INF/classesとかに入れておくだけでも大丈夫ですよ。 |
|
投稿日時: 2003-06-06 15:35
ごめんなさい。勘違いしてました。
環境変数 CLASSPATH で定義されているパスを探索するのは、 ClassLoader.getSystemResourceAsStream() でした。m(..)m |
|
投稿日時: 2003-06-06 15:43
「できました、ありがとうございました」だけではあれなので、
役に立つかは疑問ですがコードを載せておきます。 commons-collections パッケージの ExtendedProperties を使っています。 org.apache.commons.collections.ExtendedProperties props = new ExtendedProperties(); props.load(this.class.getResourceAsStream("common.properties"), "Shift_JIS"); |
1
