据我理解,Tomcat允许创建尽可能多的servlet副本以处理请求。
这迫使我的servlet没有重量级状态,而是将所有状态存储在(单例)servlet上下文中。
是否可以配置Tomcat将我的servlet视为单例,并始终只创建一个servlet实例,而不考虑负载?
不,我不这么认为。然而,在实践中,即使JavaEE规范允许它实例化多个servlet,但tomcat只会实例化一个servlet。大多数(如果不是全部)MVC框架都依赖于这个假设,并在servlet中存储了大量的配置状态。
如果你想保险起见,那么不要将你的状态存储在servlet中,而是将其放在另一个使用单例模式的类中,并从你的servlet引用该单例。
SingleThreadModel
接口。 - Peter Štibraný