如何的servlet实例数由容器装载之后产生的?辛格尔顿?

问题描述 投票:2回答:3

如何一个servlet实例数由servlet容器装载之后产生的?是不是只有一个?

java servlets
3个回答
9
投票

Servlet的不坚持Singleton pattern。 Servlet类有其已经违反了Singleton模式的公共构造函数。 servlet的创作是在默认情况下只Just Create One pattern。从技术上讲,容器可以创建许多人,因为它需要。特别是如果该servlet发生落实(不建议使用)SingleThreadedModel接口,使容器可以为了提高性能创建这些Servlet实例池。

但是,这是事实,同一个实例可以在多个请求之间共享。这就是为什么它没有分配任何请求/会话范围的数据作为servlet的一个实例变量是非常重要的。它将多个请求之间共享。

Servlet的在其自身附着于顺便Template Method pattern。这是不相关的创作,它只是一种行为模式。

See also:


4
投票

只有一个单Servlet实例每整个应用程序(懒洋洋地默认情况下)创建的,所以它必须是线程安全的(注意servlet的字段)。然而请求和响应的对象的每个请求产生,因此是线程安全的。

在另一方面,HTTPSession是每个用户会话(废话......),所以如果同一用户访问与两个同时请求的应用程序,考虑在会话同步。正如你所看到的,servlet的线程模型是有点复杂...


2
投票

是的,多线程一个实例。

© www.soinside.com 2019 - 2024. All rights reserved.