java - 每个请求是否访问同一个 servlet 对象?

标签 java http servlets request

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

最佳答案

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

来自 Servlet 3.0 规范:

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.

...

Generally the Web container handles concurrent requests to the same servlet by concurrent execution of the service method on different threads.

关于java - 每个请求是否访问同一个 servlet 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12509830/

相关文章:

java - 我可以在一个 HttpServletResponse 中附加多个附件吗

java - Android Studio(Java)中无法使用时间戳,当点击按钮时,模拟器会喊下来

ruby-on-rails - 如何同时以 GET 和 POST 方式传递值?

java - 无需任何框架即可将依赖项注入(inject) Servlet 的最佳/最干净方法

php - 重定向到页面并发送自定义 HTTP header

python 3 https 发帖很慢

tomcat - 如何在 servlet web.xml 中设置 Tomcat 的版本?

java - 如何在Java中声明一个不能改变类成员的方法?

java - Android 无法实例化 Activity : Didn't find class on path

java - 在 Spring 应用程序中配置 Hibernate