KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > tanukisoftware > wrapper > test > ShutdownHook


1 package org.tanukisoftware.wrapper.test;
2
3 /*
4  * Copyright (c) 1999, 2006 Tanuki Software Inc.
5  *
6  * Permission is hereby granted, free of charge, to any person
7  * obtaining a copy of the Java Service Wrapper and associated
8  * documentation files (the "Software"), to deal in the Software
9  * without restriction, including without limitation the rights
10  * to use, copy, modify, merge, publish, distribute, sub-license,
11  * and/or sell copies of the Software, and to permit persons to
12  * whom the Software is furnished to do so, subject to the
13  * following conditions:
14  *
15  * The above copyright notice and this permission notice shall be
16  * included in all copies or substantial portions of the Software.
17  *
18  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
20  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21  * NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
22  * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
23  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
25  * OTHER DEALINGS IN THE SOFTWARE.
26  *
27  *
28  * Portions of the Software have been derived from source code
29  * developed by Silver Egg Technology under the following license:
30  *
31  * Copyright (c) 2001 Silver Egg Technology
32  *
33  * Permission is hereby granted, free of charge, to any person
34  * obtaining a copy of this software and associated documentation
35  * files (the "Software"), to deal in the Software without
36  * restriction, including without limitation the rights to use,
37  * copy, modify, merge, publish, distribute, sub-license, and/or
38  * sell copies of the Software, and to permit persons to whom the
39  * Software is furnished to do so, subject to the following
40  * conditions:
41  *
42  * The above copyright notice and this permission notice shall be
43  * included in all copies or substantial portions of the Software.
44  */

45
46 import java.lang.reflect.InvocationTargetException JavaDoc;
47 import java.lang.reflect.Method JavaDoc;
48
49 /**
50  *
51  *
52  * @author Leif Mortenson <leif@tanukisoftware.com>
53  */

54 public class ShutdownHook {
55     /*---------------------------------------------------------------
56      * Main Method
57      *-------------------------------------------------------------*/

58     public static void main(String JavaDoc[] args) {
59         // Locate the add and remove shutdown hook methods using reflection so
60
// that this class can be compiled on 1.2.x versions of java.
61
Method JavaDoc addShutdownHookMethod;
62         try {
63             addShutdownHookMethod =
64                 Runtime JavaDoc.class.getMethod("addShutdownHook", new Class JavaDoc[] {Thread JavaDoc.class});
65         } catch (NoSuchMethodException JavaDoc e) {
66             System.out.println("Shutdown hooks not supported by current JVM.");
67             return;
68         }
69         
70         System.out.println("This application registers a shutdown hook which");
71         System.out.println("should be executed after the JVM has told the Wrapper");
72         System.out.println("it is exiting.");
73         System.out.println("This is to test the wrapper.jvm_exit.timeout property");
74         
75         Runtime JavaDoc runtime = Runtime.getRuntime();
76         Thread JavaDoc hook = new Thread JavaDoc() {
77                 public void run() {
78                     System.out.println("Starting shutdown hook. Loop for 20 seconds.");
79                     System.out.println("Should timeout unless this property is set: wrapper.jvm_exit.timeout=25");
80
81                     long start = System.currentTimeMillis();
82                     while(System.currentTimeMillis() - start < 20000)
83                     {
84                         try
85                         {
86                             Thread.sleep( 250 );
87                         }
88                         catch ( InterruptedException JavaDoc e )
89                         {
90                             // Ignore
91
}
92                     }
93                     System.out.println("Shutdown look complete. Should exit now.");
94                 }
95             };
96         try {
97             addShutdownHookMethod.invoke(runtime, new Object JavaDoc[] {hook});
98         } catch (IllegalAccessException JavaDoc e) {
99             System.out.println("Unable to register shutdown hook: " + e.getMessage());
100         } catch (InvocationTargetException JavaDoc e) {
101             System.out.println("Unable to register shutdown hook: " + e.getMessage());
102         }
103         
104         System.out.println("Application complete. Wrapper should stop, invoking the shutdown hooks.");
105         System.out.println();
106     }
107 }
108
109
Popular Tags