- - PR -
拡張性を考慮した開発
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-04-02 21:45
お世話になります。
JavaでWebシステムを開発したいのですが 変動する環境の値(サーバ名やIPアドレス等)によって 開発物に手を入れたくありませんので ある程度は拡張性を考慮したものを作りたいです。 そこで 1.変動する環境値を設定ファイルに保持する。 HOSTNAME = 192.168.1.2 PASSWORD = admin 2.変動する環境値をURLで受け渡す。 http://192.168.1.1/cgi-bin/aaa.cgi?HOSTNAME=192.168.1.2&PASSWORD=admin 等を考えたのですが、それ以上の事が思いつきません。 2.はセキュリティ上好ましくないような気がしますが この辺についてご存知の方、ご教示願います。 | ||||
|
投稿日時: 2007-04-02 22:31
もちろん name=value 形式の .properties ファイルを用意しておく方法もありますが、Web アプリケーションならではの方法といえば web.xml に書くのが手軽ではないでしょうか。
と記載しておけば ServletContext#getInitParameter() で取得できます。 http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/ServletContext.html#getInitParameter(java.lang.String) | ||||
|
投稿日時: 2007-04-03 09:30
ご回答ありがとうございました。
助かりました。 | ||||
|
投稿日時: 2007-04-03 11:11
ただし、warファイルを作るのであればweb.xmlはwarファイルの中に入りますから、作り直しになります。
Tomcatの引数でパスを与えて、その下にあるプロパティファイルを読んでますね。 | ||||
|
投稿日時: 2007-04-03 18:22
環境変数に設定するという手もありますよ。
| ||||
|
投稿日時: 2007-04-03 19:16
web.xml が deployment descriptor という呼ばれるのはそもそもデプロイ時に環境に合わせて設定を外だししておこうという思想です。
開発、運用、デプロイメントのポリシーにもよりますが、Webアプリケーションが依存するライブラリや設定は基本的に war に全部入れましょうというのが j2ee の設計です。 #確か Deployment API を使えば war 自体をいじらずに任意のデプロイメントデスクリプタを指定できたような・・・ war の外部に何か依存するものがあると、衝突している場合厄介なことになるので気をつけましょう。 例えば必要とする設定ファイル名が重複していて、フォーマットが異なるとか、同じ名前の環境変数だけど違う設定が必要な web アプリケーションが2つあるとかいう状況になると困ります。 | ||||
|
投稿日時: 2007-04-04 10:59
JNDIを使えばserver.xmlの<Context>要素内の<Resource>要素および
<ResourceParams>要素でデータを渡せるのではないですかね? 私自身あまりそのへんを作りこんだことはないのですが 配備の際に個別に設定するものは同じく配備の際に設定する部分に 依存させておくのが運用上は楽なように思えます。 |
1