Project I am working currently requires the ability to detect shutdown on JVM. Its basically required to be detected so that active connections to the JMS server to be destroyed. I wrote code to destroy connection on ServletContextListener which worked fine for some scenario, but failed if I kill web server processes explicitly.
The solution is a little known feature of the language that lets you register JVM shut down hooks. A shut down hook is simply a Thread that is registered with the JVM and run just before the JVM shuts down.
Here is code snippet to register shutdown hook with JVM:
The solution is a little known feature of the language that lets you register JVM shut down hooks. A shut down hook is simply a Thread that is registered with the JVM and run just before the JVM shuts down.
Here is code snippet to register shutdown hook with JVM:
Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { // your code here which needs be executed before shutdown } }); Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { try { Thread.sleep(10000); } catch (InterruptedException ex) { } // halt will bail out without calling further shutdown hooks or // finalizers Runtime.getRuntime().halt(1); } });