根据servlet生命周期,对servlet的容器的第一个请求将调用init()
方法(对于第一个请求只有一次),之后它将提供相应的service()
方法,最后(结束) servlet的生命周期)destroy()
方法将被调用。
意味着init()
和destory()
将在servlet的生命周期中调用一次。
我的查询如下:
init()
方法,一旦我们停止服务器(tomcat或webcontainer),它将调用destroy()
方法。所以从上面看来,似乎servlet是单例。
请以我的理解确认。
答案 0 :(得分:1)
2.2实例数
servlet声明,它通过注释为 在第8章“注释和可插拔性”或部分内容中描述 包含servlet的Web应用程序的部署描述符, 如第14章“部署描述符”中所述,控制如何 servlet容器提供servlet的实例。对于servlet没有 托管在分布式环境(默认)servlet中 容器必须每个servlet声明只使用一个实例。然而, 对于实现SingleThreadModel接口的servlet, servlet容器可以实例化多个实例以处理繁重的事件 请求加载并序列化对特定实例的请求。章节 2 Servlet接口7在部署servlet的情况下 部署描述符中标记为的应用程序的一部分 可分配的,每个servlet只有一个容器 每个Java虚拟机(JVM™)的声明1。但是,如果是servlet 在可分发的应用程序中实现SingleThreadModel 接口,容器可以实例化它的多个实例 容器的每个JVM中的servlet。
因此,从单例的规范和定义的上述引用开始,我们不能说Servlet是Singleton