如何从 Eclipse 调用 servlet 中的 destroy()?
How to call destroy() in servlet from eclipse?
当我关闭服务器时,Eclipse 中没有调用 destroy()。
public class Demo extends GenericServlet {
public void init(ServletConfig config) throws ServletException{
System.out.println("intit intialized");
}
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
System.out.println("servicccceeeeeeeee method........");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.print("<h1>service method</h1>");
out.close();
}
public void destroy() {
System.out.printlnln(".........destroy method invoked.......");
}
}
何时以及如何调用 destroy 方法?
在 Eclipse 中,仅当您正常关闭应用程序时才会调用 destroy()
。如果你用停止按钮关闭它,或者如果你拔掉你电脑的电源 destroy()
将不会被调用。
现在更多关于方法本身:
Servlet.destroy() 的 javadoc 说:
Called by the servlet container to indicate to a servlet that the servlet is being taken out of service.
This method is only called once all threads within the servlet's service method have exited or after a timeout period has passed. After the servlet container calls this method, it will not call the service method again on this servlet.
This method gives the servlet an opportunity to clean up any resources that are being held (for example, memory, file handles, threads) and make sure that any persistent state is synchronized with the servlet's current state in memory.
它没有指定什么情况会导致 servlet 被“停止服务”,它只是一个您可以在需要时做出反应的事件。所以在 destroy 中你应该清理你的 Servlet 如果有什么要清理的,你可以存储 Servet 的状态,并且可能记录错误。这可能发生,例如,因为服务器内存不足。
当您突然终止 整个Java 虚拟机时,它不会被调用。 IE。当您按下 Eclipse 的 Console 选项卡中的红色方形按钮时。
当您轻轻地停止或重新启动服务器本身时,它将被调用。 IE。当您按下 Eclipse 的 Servers 选项卡中的红色方形按钮时。
destroy()
方法在从服务中删除 servlet
实例之前由容器调用,并使 servlet
有机会清理任何持有的资源(例如,内存、文件句柄、线程)并确保任何持久状态与内存中的 servlet's
当前状态同步。
destroy()
和 init()
方法在 servlet 的生命周期中只被调用一次,而 service()
方法可能被调用多次。 destory()
将被称为:
1.when容器关闭或应用程序关闭;
2.when容器判定内存不足;
3.when这个servlet已经很久没有收到请求了
servlet容器调用该方法后,不会再对该servlet调用service方法。
当您停止应用程序中 运行 的服务器时,销毁方法会自动调用。
在我使用 tomcat 的应用程序中,所以当我停止服务器时会自动调用 destroy 方法。
当我关闭服务器时,Eclipse 中没有调用 destroy()。
public class Demo extends GenericServlet {
public void init(ServletConfig config) throws ServletException{
System.out.println("intit intialized");
}
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
System.out.println("servicccceeeeeeeee method........");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.print("<h1>service method</h1>");
out.close();
}
public void destroy() {
System.out.printlnln(".........destroy method invoked.......");
}
}
何时以及如何调用 destroy 方法?
在 Eclipse 中,仅当您正常关闭应用程序时才会调用 destroy()
。如果你用停止按钮关闭它,或者如果你拔掉你电脑的电源 destroy()
将不会被调用。
现在更多关于方法本身:
Servlet.destroy() 的 javadoc 说:
Called by the servlet container to indicate to a servlet that the servlet is being taken out of service.
This method is only called once all threads within the servlet's service method have exited or after a timeout period has passed. After the servlet container calls this method, it will not call the service method again on this servlet. This method gives the servlet an opportunity to clean up any resources that are being held (for example, memory, file handles, threads) and make sure that any persistent state is synchronized with the servlet's current state in memory.
它没有指定什么情况会导致 servlet 被“停止服务”,它只是一个您可以在需要时做出反应的事件。所以在 destroy 中你应该清理你的 Servlet 如果有什么要清理的,你可以存储 Servet 的状态,并且可能记录错误。这可能发生,例如,因为服务器内存不足。
当您突然终止 整个Java 虚拟机时,它不会被调用。 IE。当您按下 Eclipse 的 Console 选项卡中的红色方形按钮时。
当您轻轻地停止或重新启动服务器本身时,它将被调用。 IE。当您按下 Eclipse 的 Servers 选项卡中的红色方形按钮时。
destroy()
方法在从服务中删除 servlet
实例之前由容器调用,并使 servlet
有机会清理任何持有的资源(例如,内存、文件句柄、线程)并确保任何持久状态与内存中的 servlet's
当前状态同步。
destroy()
和 init()
方法在 servlet 的生命周期中只被调用一次,而 service()
方法可能被调用多次。 destory()
将被称为:
1.when容器关闭或应用程序关闭;
2.when容器判定内存不足;
3.when这个servlet已经很久没有收到请求了
servlet容器调用该方法后,不会再对该servlet调用service方法。
当您停止应用程序中 运行 的服务器时,销毁方法会自动调用。 在我使用 tomcat 的应用程序中,所以当我停止服务器时会自动调用 destroy 方法。