- PR -

拡張性を考慮した開発

1
投稿者投稿内容
ゆいな
ベテラン
会議室デビュー日: 2006/01/19
投稿数: 89
投稿日時: 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.はセキュリティ上好ましくないような気がしますが
この辺についてご存知の方、ご教示願います。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-04-02 22:31
もちろん name=value 形式の .properties ファイルを用意しておく方法もありますが、Web アプリケーションならではの方法といえば web.xml に書くのが手軽ではないでしょうか。
コード:
  <context-param>
    <param-name>name</param-name>
    <param-value>value</param-value>
  </context-param>


と記載しておけば ServletContext#getInitParameter() で取得できます。
http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/ServletContext.html#getInitParameter(java.lang.String)
ゆいな
ベテラン
会議室デビュー日: 2006/01/19
投稿数: 89
投稿日時: 2007-04-03 09:30
ご回答ありがとうございました。
助かりました。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2007-04-03 11:11
ただし、warファイルを作るのであればweb.xmlはwarファイルの中に入りますから、作り直しになります。
Tomcatの引数でパスを与えて、その下にあるプロパティファイルを読んでますね。
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2007-04-03 18:22
環境変数に設定するという手もありますよ。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-04-03 19:16
web.xml が deployment descriptor という呼ばれるのはそもそもデプロイ時に環境に合わせて設定を外だししておこうという思想です。
開発、運用、デプロイメントのポリシーにもよりますが、Webアプリケーションが依存するライブラリや設定は基本的に war に全部入れましょうというのが j2ee の設計です。
#確か Deployment API を使えば war 自体をいじらずに任意のデプロイメントデスクリプタを指定できたような・・・

war の外部に何か依存するものがあると、衝突している場合厄介なことになるので気をつけましょう。
例えば必要とする設定ファイル名が重複していて、フォーマットが異なるとか、同じ名前の環境変数だけど違う設定が必要な web アプリケーションが2つあるとかいう状況になると困ります。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-04-04 10:59
JNDIを使えばserver.xmlの<Context>要素内の<Resource>要素および
<ResourceParams>要素でデータを渡せるのではないですかね?

私自身あまりそのへんを作りこんだことはないのですが
配備の際に個別に設定するものは同じく配備の際に設定する部分に
依存させておくのが運用上は楽なように思えます。
1

スキルアップ/キャリアアップ(JOB@IT)