对于一般情况-非分布式,多线程的,可以保证只有servlet的一个实例。根据Servlet 3.0规范:
2.1请求处理方法
基本的Servlet接口定义了用于处理客户端请求的服务方法。对于servlet容器路由到servlet实例的每个请求,都会调用此方法。处理对Web应用程序的并发请求通常需要Web
Developer设计Servlet,这些Servlet可以处理在特定时间在服务方法内执行的多个线程。通常,Web容器通过在不同线程上并发执行service方法来处理对同一servlet的并发请求。2.2实例数
Servlet声明(通过第8章“注释和可插入性”中所述的批注或第14章“ Deployment
Descriptor”中描述的包含该Servlet的Web应用程序的部署描述符的一部分)控制Servlet容器的方式提供Servlet的实例。
对于未在分布式环境中托管的servlet(默认设置),每个servlet声明中servlet容器只能使用一个实例
。但是,对于实现SingleThreadModel接口的servlet,该servlet容器可以实例化多个实例以处理繁重的请求负载并序列化对特定实例的请求。如果将servlet作为部署描述符中标记为可分发的应用程序的一部分进行部署,则每个Java虚拟机(JVM™)1的每个servlet声明中,一个容器只能具有一个实例。但是,如果可分发应用程序中的Servlet实现SingleThreadModel接口,则容器可以在容器的每个JVM中实例化该Servlet的多个实例。



