loadOnStartup时的servlet生命周期

时间:2011-07-07 14:21:44

标签: java servlets

当我们在web.xml中提到任何servlet为loadOnStartup时,肯定会调用它的init方法。只是想确认servicedestroy方法是否也被调用?如果没有他们被召唤?

另一个问题是,每次调用init方法时都会提到一次。这是否意味着当servlet第一次收到请求时,将调用init方法,然后调用service

但不会召唤毁灭。当第二个请求它将再次调用服务方法而不是init方法。这种理解是否正确?但是当容器决定调用destroy方法时?

3 个答案:

答案 0 :(得分:2)

  • loadOnStartup表示将加载servlet(及其在容器启动期间调用的init(..)方法。否则,正如您所怀疑的那样,它将在第一个请求到来时加载
  • 容器只有每个servlet的一个实例。当他们创建它时,他们会调用init(..)。取消部署上下文时(例如 - 容器已停止),将调用destroy()

答案 1 :(得分:1)

loadOnStartup优先考虑哪些线程在其他线程之前加载。 Servlet容器将加载servlet并调用init方法。如果loadOnStartup中未提及web.xml,则在需要servlet的请求调用时将实例化serlvet。

servlet的初始化只发生一次。一旦初始化,servlet容器就会保留它。

对于请求处理,servlet容器调用serlvet的service()方法,当servlet容器关闭时,它将调用所有servlet的destroy()方法并从容器中删除servlet。

有关详情,请查看一些解释hereJava EE

答案 2 :(得分:0)

当我们在load-on-start-up enable中启用web.xml时,我们的servlet程序将在服务器启动期间实例化。意味着每个请求都需要相同的时间来响应。