• ベストアンサー

変更される可能性がある定数の持ち方

いつも参考にさせて頂いています。 現在WEBアプリを開発中です。 定数の持ち方についてお聞かせください。 (この定数はエンドユーザさんが一時的に変更する可能性がある場合を想定しています) 現在の実装では、サーブレットを継承しているクラス内でinitメソッドを実装し、サーブレット起動時にプロパティファイルの値を読み込む実装になっています。(変更がある場合を想定しているので、外だしにしているようです。) 通常そういう場合はDB上に値を持っておくのがよくあるケースだと思うのですが、DB上に持たせないというのが仕様のようです。 通常はそういう場合ってどこに定数を持たせておくのがよりベターなんでしょうか? できれば値を変更した場合、アプリの再起動なしで変更された値がアプリに反映されるほうが望ましいと思っています。 web.xml上に持たせておくとかいうのはあまりよくないでしょうか? web.xmlの場合は再起動しないと値が反映されないような気もしますが… どんな小さなことでもいいので意見をお聞かせ願えますでしょうか。 サーバ ・websphere java ・jdk1.3.2 以上宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.5

#3です。 更新可能なファイル形式で持つことになると、 1.ディレクトリの位置を決めなくてはいけない 2.ファイルサイズがアプリケーションを阻害しないようにしなくてはいけない 3.OS非依存な形で保持しなくてはいけない と言うことを考えなくてはいけません。 っていうのが面倒。 ちなみに3はJAVAで構築する際のうたい文句です。

その他の回答 (4)

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.4

スコープ次第なのではないでしょうか? (1)変更するのはクライアントで一時的なもの。再ログインした時は元の値   →クッキーやセッション変数 (2)変更するのはクライアントで定常的なもの。そのユーザが再ログインした時はその変更後の値   →DBを使う。DBが使えないのなら、ユーザIDをキーにしたHashTableをスタティッククラスに格納 (3)変更するのはクライアントで定常的なもの。一旦変更されると全ユーザがその値を使う   →スタティッククラスに格納。但し処理中に変更された値を使ってしまう可能性を排除した作りにする必要がある。 (4)その他   →????

  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.3

個々のクライアントで違う設定をしたい場合は特にですが、 cookieで対応したりします。 Webサーバでxmlなどのファイルでだと、 サーバの保存領域のことを考えなくてはならなくなるので 結構面倒です。

pgBeginImo
質問者

お礼

回答ありがとうございます。 クライアントで個々の設定はしません。 アクセスしている方全員が同じ値を使用します。 >Webサーバでxmlなどのファイルでだと、 >サーバの保存領域のことを考えなくてはならなくなるので >結構面倒です。 とのことですがどういうことでしょうか? もう少し具体的に教えて頂けると助かります。 宜しくお願いします。

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.2

>2.もし変更する場合、再起動せずに変更した値を反映したい。 例えばsetter getterメソッドを用いてパラメータを変更する 画面を呼び出して都度変更となりますと 現在アクセス中のユーザーに問題が発生しそうですし 稼動中にたびたび変更するでは返って不都合が生じ てしまいそうですのでこの場合は一旦処理を停止した上で パラメーターの変更になるのが順当といえるのではないでしょうか?

pgBeginImo
質問者

お礼

回答ありがとうございます。 基本的には変更しない値なのでアクセス中のユーザ云々というのは特に心配はしていません。 いったん処理を停止した上でというのはサーバ再起動ということでしょうか? 確かにそれが一番確実のような気はします

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.1

1.現状はどうしてますか? 2.理想的にはどうしたいのですか?

pgBeginImo
質問者

お礼

回答ありがとうございます。 >1.現状はどうしてますか? >2.理想的にはどうしたいのですか? 1.現状はプロパティファイルから読み込んでいます。 2.理想はわかりません。 理想はわかりませんと答えたのは、通常どうすべきかがわからないので 理想系そのものがわかりません。 その回答の参考になることは、 1.クライアントさんが変更する可能性がある。 2.もし変更する場合、再起動せずに変更した値を反映したい。 上記2点です。 期待どおりの質問に回答できてるかどうかわかりませんが、アドバイス頂けますでしょうか? 以上宜しくお願いします。

関連するQ&A