remm 01/12/18 07:50:28 Modified: catalina/src/share/org/apache/catalina/startup Catalina.java Log: - Bug 5484 mentioned a shutdown hook, and that reminded me that Catalina doesn't set one which could be used to try to do a clean shutdown of the server when the process is killed (under Windows, it happens often when ^C is used to close the server). This patch adds a shutdown hook which will stop the server object. Revision Changes Path 1.42 +37 -5 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/Catalina.java Index: Catalina.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/Catalina.java,v retrieving revision 1.41 retrieving revision 1.42 diff -u -r1.41 -r1.42 --- Catalina.java 2001/12/02 19:22:23 1.41 +++ Catalina.java 2001/12/18 15:50:28 1.42 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/Catalina.java,v 1.41 2001/12/02 19:22:23 patrickl Exp $ - * $Revision: 1.41 $ - * $Date: 2001/12/02 19:22:23 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/Catalina.java,v 1.42 2001/12/18 15:50:28 remm Exp $ + * $Revision: 1.42 $ + * $Date: 2001/12/18 15:50:28 $ * * ==================================================================== * @@ -97,7 +97,7 @@ * </u> * * @author Craig R. McClanahan - * @version $Revision: 1.41 $ $Date: 2001/12/02 19:22:23 $ + * @version $Revision: 1.42 $ $Date: 2001/12/18 15:50:28 $ */ public class Catalina { @@ -490,11 +490,15 @@ definition + "java.,org.apache.catalina.,org.apache.jasper."); } + Thread shutdownHook = new CatalinaShutdownHook(); + // Start the new server if (server instanceof Lifecycle) { try { server.initialize(); ((Lifecycle) server).start(); + // Register shutdown hook + Runtime.getRuntime().addShutdownHook(shutdownHook); // Wait for the server to be told to shut down server.await(); } catch (LifecycleException e) { @@ -511,6 +515,7 @@ if (server instanceof Lifecycle) { try { ((Lifecycle) server).stop(); + Runtime.getRuntime().removeShutdownHook(shutdownHook); } catch (LifecycleException e) { System.out.println("Catalina.stop: " + e); e.printStackTrace(System.out); @@ -574,6 +579,34 @@ } + // --------------------------------------- CatalinaShutdownHook Inner Class + + + /** + * Shutdown hook which will perform a clean shutdown of Catalina if needed. + */ + protected class CatalinaShutdownHook extends Thread { + + public void run() { + + if (server != null) { + try { + ((Lifecycle) server).stop(); + } catch (LifecycleException e) { + System.out.println("Catalina.stop: " + e); + e.printStackTrace(System.out); + if (e.getThrowable() != null) { + System.out.println("----- Root Cause -----"); + e.getThrowable().printStackTrace(System.out); + } + } + } + + } + + } + + } @@ -609,4 +642,3 @@ } -
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>