3

我在网上做了很多研究,但似乎无法找到我的问题的明确答案,这就是为什么我求助于这个网站上的专家。

使用 java 和 Tomcat 开发时,我有一个 Singleton 类来处理我的数据库连接。所以问题是当不同的用户连接到我的 web 应用程序,并且我的服务器端 java 代码执行时,它是否有自己的单例类?

例如:
用户 A 登录到我的站点。创建了我的单例实例。
用户 B 登录到我的站点,在 Java 代码的两次执行之间是否存在相同的对象(单例)?还是用户 A 和用户 B 的每次执行都得到不同的单例?

谢谢你。

4

2 回答 2

5

存储在静态字段中的单例对于每个类加载器都是唯一的。因此,您的 web 应用程序在 tomcat 实例上的所有用户都将使用相同的单例。

于 2012-05-09T08:37:14.213 回答
0

单例是指每个 JVM 的单个实例(准确地说是每个类加载器)。Tomcat 没有每个用户单独的环境。相反,它为每个 Web 应用程序提供了单独的类加载器(因此也是单独的环境)。因此,无论连接了多少用户,服务器端都是一个环境,并且该环境具有您的单例类的单个实例,该实例由该环境中加载的所有类共享。

于 2012-05-09T09:33:42.157 回答