Tomcat Web应用程序中的单例和类加载器

时间:2012-05-09 07:59:40

标签: java mysql tomcat classloader

我一直在网上做很多研究,但似乎无法找到我问题的明确答案,这就是为什么我转向本网站的专家。

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

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

谢谢。

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

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