【问题标题】:Servlet thread pool vs Servlet instance pool - by the web containerServlet 线程池 vs Servlet 实例池 - 通过 Web 容器
【发布时间】:2011-10-19 18:46:40
【问题描述】:

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

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

【问题讨论】:

    标签: multithreading servlets jboss websphere web-container


    【解决方案1】:

    编辑:当心!从 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 应用程序,如第 1 章所述 SRV.13,“部署描述符”,控制 servlet 容器的方式 提供 servlet 的实例。对于未托管在 分布式环境(默认),servlet容器必须使用 每个 servlet 声明只有一个实例。但是,对于 servlet 实现 SingleThreadModel 接口,servlet 容器 可以实例化多个实例来处理繁重的请求负载和 序列化对特定实例的请求。

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

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

    【讨论】:

    • 我在规范中讨论了那个主题。现在关于创建了多少实例的事情变得更清楚了。本质上,在非分布式、非 SingleThreadedModel 环境中只有一个实例。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    相关资源
    最近更新 更多