- - PR -
メモリ上に保持するという意味を教えてください。
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-02-24 02:13
いつもお世話になっています。
Windows2000 Tomcata4.1.27 struts1.1 という環境で、とあるプロトタイプを作成しております。 よく、メモリ上に保持しておくという表現を良く見かけるのですが、 ※サーバサイドJAVAの場合はservletのinitメソッドの中でその記述をするのだと 認識しております。 保持しておく場所(このような表現が正しいかは定かではありませんが)としては 以下のものが考えられるのですが以下の二つの使い分けはどのようにするべきでしょうか? もしくは他の方法がありますでしょうか? 1、アプリケーションSCOPE(つまりはCONTEXTの中に保持) 2、なんらかのクラスのクラス属性(つまりstatic変数ということ) 例えばstrutsのstruts-config.xmlの中身はconfigにセットされているように思えます。 実際にフレームワーク等を開発された経験のある方などいらっしゃいましたら 是非ご教授ください。 よろしくお願いします。 |
|
投稿日時: 2004-02-24 02:29
初期化、破棄処理をしやすいという点でアプリケーションスコープがよいかもしれません。
設定用のサーブレットを作って init/destroy で初期化/廃棄できますので。 static 変数に設定するとしばしばクラスローダ回りで混乱することがあります。 |
|
投稿日時: 2004-02-24 04:59
> static 変数に設定するとしばしばクラスローダ回りで混乱することがあります。
どういうときに混乱しますか? |
|
投稿日時: 2004-02-24 11:05
>> static 変数に設定するとしばしばクラスローダ回りで混乱することがあります。
>どういうときに混乱しますか? 複数のクラスローダのパスに同じクラスが通っている場合です。 Tomcat のシステムクラスパスに通っていて、さらに WEB-INF/classes にも通っている場合とか、一つの ear 内で ejb と Web アプリケーションに同じクラスが通っている場合です。 例えばシステムクラスローダでクラスが読み込まれてしまうと、Web アプリケーションが異なっても static 変数の内容は共有されてしまいます。 クラスローダの構造を理解していればいいのですが。 |
|
投稿日時: 2004-02-25 07:37
ありがとうございました。
|
1
