Servlet 线程池 vs Servlet 实例池 - 通过 Web 容器

发布于 2024-12-11 00:45:05 字数 213 浏览 0 评论 0原文

据我所知,像 jboss 这样的 Web 容器有一个参数来提及要创建的 servlet 的线程数,这是容器可以创建在 servlet 的单个实例上运行的最大线程数。

然而我的问题是,有没有办法指定要创建的 servlet 实例的数量?如果是,目的是什么?这样做的需要可能是处理请求,当单个实例上运行的一个或多个线程以某种方式损坏该 servlet 数据或 destroy() 它时 - 冗余目的。

I understand that web containers like jboss have a parameter to mention the number of threads of the servlet to create, which is the maximum number of threads the container can create to run on a Single instance of the servlet.

My question however is, is there a way to specify the number of instances of a servlet to be created? If yes, what is the purpose? The need for this may be to handle requests, when say a thread or threads running on the single instance somehow corrupt that servlet data or destroy() it - Redundancy purposes.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤独陪着我 2024-12-18 00:45:05

编辑:小心!从 Servlet 规范 2.4 开始,接口
javax.servlet.SingleThreadModel< /a> 已弃用,没有直接替代。

该规范并不清楚容器是否应该创建同一个 servlet 的多个实例,或者始终只创建一个实例。


来自 Servlet 规范 2.4 http://download.oracle。 com/otndocs/jcp/servlet-2.4-fr-spec-oth-JSpec/

SRV.2.2 实例数量

servlet 声明是部署描述符的一部分
包含 servlet 的 Web 应用程序,如第 1 章中所述
SRV.13,“部署描述符”,控制servlet容器如何
提供 servlet 的实例。对于未托管在
分布式环境(默认),servlet容器必须使用
每个 servlet 声明只有一个实例。然而,对于 Servlet
实现 SingleThreadModel 接口,servlet 容器
可以实例化多个实例来处理繁重的请求负载并且
将请求序列化到特定实例。

如果
servlet 被部署为应用程序中标记的一部分
部署描述符是可分发的,一个容器可能只有一个
每个 Java 虚拟机 (JVMTM) 的每个 servlet 声明都有一个实例。
但是,如果可分发应用程序中的 servlet 实现了
SingleThreadModel接口,容器可以实例化多个
容器的每个 JVM 中该 servlet 的实例。

您可以在文档中找到有关单线程模型的更多信息

EDIT: Watch out ! As of Servlet Specification 2.4, interface
javax.servlet.SingleThreadModel is deprecated, with no direct replacement.

The specification is unclear as to whether containers should then create several instances of the same servlet, or always only a single instance.


From Servlet Specification 2.4 http://download.oracle.com/otndocs/jcp/servlet-2.4-fr-spec-oth-JSpec/

SRV.2.2 Number of Instances

The servlet declaration which is part of the deployment descriptor of
theWeb application containing the servlet, as described in Chapter
SRV.13, “Deployment Descriptor”, controls how the servlet container
provides instances of the servlet. For a servlet not hosted in a
distributed environment (the default), the servlet container must use
only one instance per servlet declaration. However, for a servlet
implementing the SingleThreadModel interface, the servlet container
may instantiate multiple instances to handle a heavy request load and
serialize requests to a particular instance.

In the case where a
servlet was deployed as part of an application marked in the
deployment descriptor as distributable, a container may have only one
instance per servlet declaration per Java Virtual Machine (JVMTM).
However, if the servlet in a distributable application implements the
SingleThreadModel interface, the container may instantiate multiple
instances of that servlet in each JVM of the container.

You can found in the document more information about Single Thread Model

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文