我们应该从Servlet中的init()和service()方法调用destroy()方法吗?

gau*_*rav 5 lifecycle servlets

我们应该destroy()从Servlet中的init()service()方法中调用该方法吗?我在博客中得到了许多令人困惑的答案.

据我所知,当我们destroy()init()它调用方法时应调用并销毁servlet,如果我们要覆盖destroy()我们的servlet中.然后servlet将被销毁.

以上理解是对的吗?

Bal*_*usC 12

一切都不是真的.

servlet的destroy()方法只有在容器关闭时才被容器调用.在容器关闭期间,所有servlet都将被销毁.你不应该自己调用这个方法.该destroy()方法只是让您有机会在关机时执行一些代码.例如,关闭一些在此期间打开的外部资源init().

例如

private SomeExternalResource someExternalResource;

@Override 
public void init() {
    someExternalResource = new SomeExternalResource();
}

@Override
public void destroy() {
    someExternalResource.close();
}
Run Code Online (Sandbox Code Playgroud)

当您没有任何清理时,您不一定需要实现该方法.