每个请求是否访问相同的servlet对象?

Kye*_*JmD 18 java servlets http request

每个HTTP请求是否访问相同的servlet对象但是在不同的线程中?或者它是否创建了一个新的线程和新的Servlet实例?

dce*_*chi 14

如果您的servlet没有实现,容器将使用相同的servlet实例SingleThreadModel.否则,无法保证同一个Servlet对象被击中.如果认为有必要,容器可以自由创建更多的servlet实例.但是请求来自不同的线程,不一定是新创建的(正如Sanjay所提到的).

从Servlet 3.0规范:

对于未托管在分布式环境中的servlet(缺省值),servlet容器每个servlet声明必须只使用一个实例.但是,对于实现SingleThreadModel接口的servlet,servlet容器可以实例化多个实例以处理繁重的请求加载并将请求序列化到特定实例.

...

通常,Web容器通过在不同线程上并发执行服务方法来处理对同一servlet的并发请求.


Mar*_*jnc 9

每个HTTP请求都会创建一个新线程,但会访问Servlet的同一个实例.

编辑:如果是一个服务器节点,则该节点上将具有相同的Servlet实例.在负载平衡/许多服务器的情况下,每个Java VM通常会有一个实例.

  • 我很确定它并不总是*创建一个新的线程总是; 更像是从现有线程池中获取一个免费线程. (8认同)
  • @SanjayT.Sharma你是对的,通常这样做(出于性能原因),但这是应用程序服务器/servlet容器的实现细节,你的代码不应该依赖于它 (2认同)