※ ChatGPTを利用し、要約された質問です(原文:SAStrutsでServiceのStatic変数)
SAStrutsでServiceのStatic変数の動作に疑問があります
このQ&Aのポイント
SAStrutsを使用している際に、ServiceのStatic変数の動作について疑問が生じました。
Eclipse+Tomcatで作成したサンプルWebアプリにおいて、Actionから呼び出されているサービスには、Staticなint型の変数があります。
しかし、何度も呼び出すとある時突然、出力する数値が1にリセットされてしまうのです。Static変数はスレッド間で共通に使われるはずなので、なぜこのようなことが起こるのか理解できません。
SAStrutsでServiceのStatic変数
SAStrutsでServiceのStatic変数の動作で疑問があります。
Eclipse+TomcatでサンプルWebアプリを作成し、以下のサービスをActionから呼び出しています。
これは、Staticなint型の変数に、インスタンスを生成した回数を格納する物です。
public class SampleService{
private static int instanceCnt = 0;
public SampleService(){
instanceCnt++;
System.out.println(instanceCnt);
}
}
これを何度も呼び出すと、何故かある時突然、出力する数値が1にリセットされるのです。
Static変数はスレッド間で共通で使われているはずなので、これは起こらないはずではないでしょうか?
考えられるとすれば、Tomcatが複数のJavaVMを呼び出して、Webアプリケーションを実行しているのでは、と思うのですが、いまいち確信が持てないのです。
なぜこういう事が起こるのか、詳しい方、教えてもらえないでしょうか。