我正在尝试理解Java servlet的生命周期。
预期Java servlet实例可以持续多长时间?这有多可靠?同一个实例是否为所有客户服务?或者可以由不同的客户端生成同一个servlet类的多个实例?有没有办法强制保证同一个servlet实例永远存在(只要服务器已打开)并且相同的servlet实例为所有客户端服务?或者已经保证是这种情况了吗?
答案 0 :(得分:3)
只有一个servlet类实例,并且由规范保证。
但是你不应该在servlet实例字段中存储任何东西。这至少不是线程安全的:
ServletContext
属性答案 1 :(得分:0)
您有一个实例服务于该Servlet的所有请求。因此,它必须以reentrant方式编程(它不是线程安全的)。
现在,您应该了解servlet中的线程如何工作以理解整个图片。
最初存在SingleThreadModelInterface,但是一旦开发人员发现序列化请求并不是一个好主意,就会被弃用;)
最后,Web服务器通常有一个线程池,它们在“每个连接的线程”模型中循环使用。最近,this is being replaced带有“每个请求的线程数”和异步处理。