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

时间:2011-10-19 18:46:41

标签: multithreading servlets jboss websphere web-container

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

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

1 个答案:

答案 0 :(得分:5)

编辑:小心!从Servlet规范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声明只有一个实例。但是,对于servlet   实现SingleThreadModel接口,即servlet容器   可以实例化多个实例来处理繁重的请求负载   序列化对特定实例的请求。

     

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

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