Win a copy of Programmer's Guide to Java SE 8 Oracle Certified Associate (OCA) this week in the OCAJP forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

destroy() method

 
Ravissant Markenday
Ranch Hand
Posts: 47
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi everyone !

Could anyone please tell me when exactly the destroy() method in the servlet lifecycle is called and by whom?

thanks in advance,
Ravissant Markenday
 
Ben Souther
Sheriff
Posts: 13411
Firefox Browser Redhat VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
It is called by the container.

There are several cases where the container can or will call this method.
The most common is when the servlet is being taken out of service.

SRV.2.3.4 End of Service
The servlet container is not required to keep a servlet loaded for any particular
period of time. A servlet instance may be kept active in a servlet container for a
period of milliseconds, for the lifetime of the servlet container (which could be a
number of days, months, or years), or any amount of time in between.
When the servlet container determines that a servlet should be removed from
service, it calls the destroy method of the Servlet interface to allow the servlet to
release any resources it is using and save any persistent state. For example, the
container may do this when it wants to conserve memory resources, or when it is
being shut down.
Before the servlet container calls the destroy method, it must allow any
threads that are currently running in the service method of the servlet to complete
execution, or exceed a server-defined time limit.




The best way to find out when the container may also call the destroy method is to download the servlet spec (link in my signature) and perform a search on the word "destroy".
 
Ravissant Markenday
Ranch Hand
Posts: 47
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks Ben !!
 
Cameron Wallace McKenzie
author and cow tipper
Saloon Keeper
Posts: 4968
1
Hibernate Spring Tomcat Server
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
When the entire server goes through a controlled shutdown, the destroy method will be called.

A more common scenario to think about though is the updating of a single application. An update usually involves taking various servlets out of service, which calls the destroy method, updating the application, and then loading the same servlets again. In this type of scenario, you must be careful to clean up resources, so when the second initialization happens, objects aren't needlessly duplicated, or conflicting.

Just a couple of examples. There are more.

-Cameron McKenzie
 
Ravissant Markenday
Ranch Hand
Posts: 47
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks Cameron!!
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic