java - @PreDestroy method of a Spring singleton bean not called -


i have spring bean defined in beans.xml follows:

<context:annotation-config /> [...] <bean id="mybackend" class="mycompany.backendbean" scope="singleton" /> 

inside bean 2 methods, must executed @ start , before termination of web application:

public class backendbean implements ibackend {     private static final logger logger = loggerfactory             .getlogger(backendbean.class);      @postconstruct     public void init()     {         logger.debug("init");     }      @predestroy     public void destroy()     {         logger.debug("destroy");     } } 

when run server (mvn jetty:run), can see output of init method in console, conclude init method executed.

when press ctrl-c , jetty starts shut down, don't see output of destroy method.

what should change in order destroy method executed, when application terminated?

for spring call @predestroy callback method when application shuts down, have add shutdown hook , close application context in. attach hook jvm using runtime.getruntime().addshutdownhook(thread) or jetty if provides such api. here how you'd jvm shutdown hook:

final applicationcontext appcontext = ... // create application context                           // using 1 of various application context classes runtime.getruntime().addshutdownhook(new thread() {    public void run() {        appcontext.close();    }}); 

Comments

Popular posts from this blog

Perl - how to grep a block of text from a file -

delphi - How to remove all the grips on a coolbar if I have several coolbands? -

javascript - Animating array of divs; only the final element is modified -