- PR -

メモリ上に保持するという意味を教えてください。

1
投稿者投稿内容
ゆう
常連さん
会議室デビュー日: 2001/12/10
投稿数: 33
投稿日時: 2004-02-24 02:13
いつもお世話になっています。

Windows2000
Tomcata4.1.27
struts1.1
という環境で、とあるプロトタイプを作成しております。

よく、メモリ上に保持しておくという表現を良く見かけるのですが、
※サーバサイドJAVAの場合はservletのinitメソッドの中でその記述をするのだと
認識しております。

保持しておく場所(このような表現が正しいかは定かではありませんが)としては
以下のものが考えられるのですが以下の二つの使い分けはどのようにするべきでしょうか?
もしくは他の方法がありますでしょうか?
1、アプリケーションSCOPE(つまりはCONTEXTの中に保持)
2、なんらかのクラスのクラス属性(つまりstatic変数ということ)

例えばstrutsのstruts-config.xmlの中身はconfigにセットされているように思えます。
実際にフレームワーク等を開発された経験のある方などいらっしゃいましたら
是非ご教授ください。
よろしくお願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-02-24 02:29
初期化、破棄処理をしやすいという点でアプリケーションスコープがよいかもしれません。
設定用のサーブレットを作って init/destroy で初期化/廃棄できますので。

static 変数に設定するとしばしばクラスローダ回りで混乱することがあります。
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2004-02-24 04:59
> static 変数に設定するとしばしばクラスローダ回りで混乱することがあります。
どういうときに混乱しますか?
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-02-24 11:05
>> static 変数に設定するとしばしばクラスローダ回りで混乱することがあります。
>どういうときに混乱しますか?
複数のクラスローダのパスに同じクラスが通っている場合です。
Tomcat のシステムクラスパスに通っていて、さらに WEB-INF/classes にも通っている場合とか、一つの ear 内で ejb と Web アプリケーションに同じクラスが通っている場合です。

例えばシステムクラスローダでクラスが読み込まれてしまうと、Web アプリケーションが異なっても static 変数の内容は共有されてしまいます。

クラスローダの構造を理解していればいいのですが。
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2004-02-25 07:37
ありがとうございました。
1

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