1 87 package org.codehaus.loom.launcher; 88 89 import java.util.Hashtable ; 90 import java.util.Observable ; 91 import java.util.Observer ; 92 import org.tanukisoftware.wrapper.WrapperListener; 93 import org.tanukisoftware.wrapper.WrapperManager; 94 95 102 public class DaemonLauncher 103 implements WrapperListener, Observer  104 { 105 112 private boolean m_ignoreUpdates = false; 113 114 117 127 public Integer start( final String [] args ) 128 { 129 Integer exitCodeInteger = null; 130 131 WrapperManager.signalStarting( 45000 ); 133 134 final Hashtable data = new Hashtable (); 135 data.put( Observer .class.getName(), this ); 136 137 if( WrapperManager.isDebugEnabled() ) 138 { 139 System.out.println( "DaemonLauncher: starting up." ); 140 } 141 142 try 143 { 144 int exitCode = Main.startup( args, data, false ); 145 if( exitCode != 0 ) 146 { 147 exitCodeInteger = new Integer ( exitCode ); 148 } 149 150 if( WrapperManager.isDebugEnabled() ) 151 { 152 System.out.println( "DaemonLauncher: startup completed." ); 153 } 154 } 155 catch( final Exception e ) 156 { 157 e.printStackTrace(); 158 exitCodeInteger = new Integer ( 1 ); 159 } 160 161 WrapperManager.signalStarting( 2000 ); 163 164 return exitCodeInteger; 165 } 166 167 182 public int stop( final int exitCode ) 183 { 184 m_ignoreUpdates = true; 186 187 Main.shutdown(); 188 return exitCode; 189 } 190 191 200 public void controlEvent( final int event ) 201 { 202 if( WrapperManager.isControlledByNativeWrapper() ) 203 { 204 if( WrapperManager.isDebugEnabled() ) 205 { 206 System.out.println( 207 "DaemonLauncher: controlEvent(" + event + ") - Ignored." ); 208 } 209 210 } 213 else 214 { 215 if( WrapperManager.isDebugEnabled() ) 216 { 217 System.out.println( 218 "DaemonLauncher: controlEvent(" + event + ") - Stopping." ); 219 } 220 221 WrapperManager.stop( 0 ); 224 } 226 } 227 228 231 237 public void update( final Observable observable, final Object arg ) 238 { 239 if( m_ignoreUpdates ) 240 { 241 if( WrapperManager.isDebugEnabled() ) 243 { 244 System.out.println( 245 "DaemonLauncher: " + 246 arg 247 + " request ignored because stop already called." ); 248 System.out.flush(); 249 } 250 } 251 else 252 { 253 final String command = ( null != arg ) ? arg.toString() : ""; 254 if( command.equals( "restart" ) ) 255 { 256 if( WrapperManager.isDebugEnabled() ) 257 { 258 System.out.println( "DaemonLauncher: restart requested." ); 259 System.out.flush(); 260 } 261 262 WrapperManager.restart(); 263 264 if( WrapperManager.isDebugEnabled() ) 265 { 266 System.out.println( "DaemonLauncher: restart completed." ); 268 System.out.flush(); 269 } 270 } 271 else if( command.equals( "shutdown" ) ) 272 { 273 if( WrapperManager.isDebugEnabled() ) 274 { 275 System.out.println( "DaemonLauncher: shutdown requested." ); 276 System.out.flush(); 277 } 278 279 WrapperManager.stop( 0 ); 280 281 if( WrapperManager.isDebugEnabled() ) 282 { 283 System.out.println( "DaemonLauncher: shutdown completed." ); 285 System.out.flush(); 286 } 287 } 288 else 289 { 290 throw new IllegalArgumentException ( 291 "Unknown action " + command ); 292 } 293 } 294 } 295 296 299 public static void main( final String [] args ) 300 { 301 WrapperManager.start( new DaemonLauncher(), args ); 306 } 307 } 308 | Popular Tags |