Servlet线程池与Servlet实例池 - 由Web容器组成

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Servlet线程池与Servlet实例池 - 由Web容器组成相关的知识,希望对你有一定的参考价值。

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

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

答案

编辑:小心!从Servlet Specification 2.4开始,不推荐使用javax.servlet.SingleThreadModel接口,不需要直接替换。

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


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

SRV.2.2实例数

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

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

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

以上是关于Servlet线程池与Servlet实例池 - 由Web容器组成的主要内容,如果未能解决你的问题,请参考以下文章

Servlet 单例多线程详解

Servlet 单例多线程详解

DRP(四)——线程安全的Servlet

Event事件进程池与线程池协程

Servlet是线程安全吗?

servlet的生命周期的理解