- PR -

ServletContextの属性について。

1
投稿者投稿内容
未記入
会議室デビュー日: 2008/03/28
投稿数: 2
投稿日時: 2008-03-28 01:00
超初心者なので、基礎的な質問させてください。

ServletContextListenerをimplementsしたクラスを作成し、
アプリケーション起動時に初期設定を行っております。
この初期設定でインスタンスしたクラス(別途作成。Objectの子)を
リクエスト時に参照する為、ServletContextへsetAttribute
メソッドで属性としてセットしております。

ここで質問なのですが、上記のクラス(Objectの子)は、
Serializableをimplementsしておかないと、リクエスト時に
参照できなくなるのでしょうか?

Serializableをimplementsしない状態で、アプリケーションを
作成し、稼動させてみたのですが、とりあえずは稼動しました。
ただ、別の環境で起動しているものは、ある程度の時間経過
(この間、何度もアクセスあり)した段階で、どうも参照不可と
なっているようなのです。

分かりにくい説明で申し訳ありませんが、ご助言をお願い致します。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2008-03-28 10:52
引用:

未記入さんの書き込み (2008-03-28 01:00) より:
ここで質問なのですが、上記のクラス(Objectの子)は、
Serializableをimplementsしておかないと、リクエスト時に
参照できなくなるのでしょうか?


ServletContextに入れる属性はSerializableでなくてもよいです。
リクエスト時に参照できなくなるのは別の理由だと思います。
未記入
会議室デビュー日: 2008/03/28
投稿数: 2
投稿日時: 2008-03-29 00:25
あしゅさん、

回答頂き、ありがとうございました。
Serializableでなくとも良いということは、やはり、
別の原因ですね。

再度、調べて、別途、質問させて頂きます。
SUK2
ベテラン
会議室デビュー日: 2005/12/27
投稿数: 69
投稿日時: 2008-04-02 18:01
引用:
ただ、別の環境で起動しているものは、ある程度の時間経過
(この間、何度もアクセスあり)した段階で、どうも参照不可と
なっているようなのです。


時間経過によって参照不可になるというのが、なんか気になります。
サーブレットコンテナに何を使用しているか記載されていない為なんとも言えませんが、
もしかしたら稼働中にメモリが少なくなった段階で、ServletContextの属性がシリアライズ
され磁気ディスクに退避されているのかも・・・なんて思いました。
もしそうなのであればSerializableをインプリメントしていない場合はシリアライズに
失敗すると思われるので、その後に当該の属性を参照しようとしてデシリアライズも当然
失敗しているとか。どうでしょ?あくまで推測の域を出ませんが。
1

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