3

私はオンラインで多くの調査を行ってきましたが、私の質問に対する決定的な答えを見つけることができないようです。そのため、このサイトの専門家に相談しました.

Java と Tomcat を使用して開発する場合、データベース接続を処理する Singleton クラスがあります。問題は、さまざまなユーザーが Web アプリケーションに接続し、サーバー側の Java コードが実行されたときに、独自のシングルトン クラスを取得するかどうかです。

例:
ユーザー A が私のサイトにログインします。シングルトンのインスタンスが作成されます。
ユーザー B が私のサイトにログインします。同じオブジェクト (シングルトン) は Java コードの 2 回の実行間で保持されますか? それとも、ユーザー A とユーザー B の実行ごとに異なるシングルトンが取得されますか?

ありがとうございました。

4

2 に答える 2

5

静的フィールドに格納されるシングルトンは、クラスローダーごとに一意です。したがって、Tomcat インスタンス上の Web アプリケーションのすべてのユーザーは、同じシングルトンを使用することになります。

于 2012-05-09T08:37:14.213 に答える
0

シングルトンとは、JVMごとに(正確にはクラスローダーごとに)単一のインスタンスを意味します。Tomcatには、ユーザーごとに個別の環境はありません。代わりに、Webアプリケーションごとに個別のクラスローダー(したがって個別の環境)があります。したがって、接続されているユーザーの数に関係なく、サーバー側は単一の環境であり、この環境には、その環境にロードされているすべてのクラスによって共有されるシングルトンクラスの単一のインスタンスがあります。

于 2012-05-09T09:33:42.157 に答える