- PR -

フィールド値が突然nullになってしまう

1
投稿者投稿内容
cyanberry
常連さん
会議室デビュー日: 2005/01/07
投稿数: 37
投稿日時: 2007-04-20 19:26
いつも拝見させていただいております。

質問なのですが、サーブレット(Tomcat)にGETを投げることで起動するバッチ処理があるのですが、丁度1時間でクラスのフィールド値が何故かnullになり、ヌルポで落ちてしまいます。
クラスのフィールドはクラスの生成時に同時に生成され、その後に値が設定されることはありません。

connectionTimeoutやsessionTimeoutのせいかと思い、
 connectionTimeout=60000 (1分)
 sessionTimeout=2 (2分)
にして実験してみましたが、やはり1時間丁度でnullになります。

環境は以下の通りです。
 Java 1.5
 Tomcat 5.5

何かご存知の方いらっしゃいましたら、ご教授ください。
よろしくお願いいたします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-04-20 19:31
想像しているのと違い値がnullになっていたりしないでしょうか?

フィールドを final にしても発生するかどうか確認してみてはいかがでしょう。
cyanberry
常連さん
会議室デビュー日: 2005/01/07
投稿数: 37
投稿日時: 2007-04-20 19:35
回答ありがとうございます。
ただ、既にfinalをつけた上での現象なので・・・。
原因は違うところにあると考えています。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2007-04-20 19:46
どんなクラスなのか分からないので、なんとも…。
クラスがガベージコレクションの対象になって、新しいクラスが作られてるとか。
ちょうど一時間というから違うかなあ…。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-04-20 20:17
本当にファイナルの変数がnullに突然変わってしまうのであれば JVM の問題ですよね。

final の変数以外で NullPointerException が発生する可能性のある変数はありませんか?
再現性があるようですから変数をダンプしてみてはいかがでしょう。

「こんなことあるはずない!」と思っても99%くらいはコードに問題があります。
null 以外の値が代入された変数が null になることはありません!(たぶん)
落ち着いてがんばってデバッグしてみてください。

[ メッセージ編集済み 編集者: インギ 編集日時 2007-04-20 20:17 ]
1

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