Changeset 31814 for main/trunk/gli/src
- Timestamp:
- 2017-07-21T18:49:00+12:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/gli/src/org/greenstone/gatherer/Gatherer.java
r31813 r31814 380 380 Configuration.setString("general.library_url", true, library_url_string); 381 381 } 382 else { // local greenstone: Start up the local library server, if that's what we want 382 else { // local greenstone: add shutdown hooks to forcibly stop the server on irregular termination 383 // And start up the local library server, if that's what we want 384 385 // The Java virtual machine shuts down in response to two kinds of events: 386 // - The program exits normally, when the last non-daemon thread exits or when the exit (equivalently, System.exit) method is invoked, or 387 // - The virtual machine is terminated in response to a user interrupt, such as typing ^C, or a system-wide event, such as user logoff or system shutdown. 388 // https://coderanch.com/t/328888/java/Killing-process-spawned-Runtime-exec 389 // So here we add a shutdown hook to take care of Ctrl-C situations where GLI is irregularly terminated 390 // Sadly, the shutdownhook never gets called on Windows, whether GS2 or GS3, 391 // when a Ctrl-C is sent to the DOS prompt that launched GLI. Because GLI on Windows 392 // currently waits to respond to a Ctrl-C until AFTER GLI is already (properly) exited 393 Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { 394 public void run() { 395 396 if(Gatherer.exit != true) { // unexpected termination, such as Ctrl-C won't set Gatherer.exit 397 // so still need to at least issue the call to stop any running GS server 398 399 System.err.println("ShutDownHook called..."); 400 System.err.println("Attempting to forcibly terminate the GS server..."); 401 402 if (GS3) { // issue the ant call to stop any running GS3 403 // (tomcat and networked Derby Server) by calling GS3ServerThread.stopServer() 404 GS3ServerThread.stopServer(); 405 } else { // issue the call to stop any running GS2 local library server 406 if (LocalLibraryServer.isRunning() == true) { 407 LocalLibraryServer.forceStopServer(); 408 } 409 } 410 } 411 } 412 })); 413 414 383 415 if (!GS3) { 384 isLocalLibrary = LocalLibraryServer.start(gsdl_path, local_library_path); 385 386 // Add a shutdown hook to take care of Ctrl-C situations 387 // Sadly, neither the shutdownhook for GS3 nor for GS2 ever gets called on Windows 388 // when a Ctrl-C is sent to the DOS prompt that launched GLI: 389 // GLI on Windows currently waits to respond to a Ctrl-C until after GLI is already (properly) exited 390 Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { 391 public void run() { 392 393 if(Gatherer.exit != true) { // unexpected termination, such as Ctrl-C won't set Gatherer.exit 394 // so still need to at least issue the call to stop any running GS2 local library server 395 System.err.println("ShutDownHook called..."); 396 System.err.println("Attempting to forcibly terminate the GS2 server..."); 397 398 if (LocalLibraryServer.isRunning() == true) { 399 LocalLibraryServer.forceStopServer(); 400 } 401 402 403 } else { 404 System.err.println("Gatherer.exit is false"); 405 } 406 } 407 })); 416 isLocalLibrary = LocalLibraryServer.start(gsdl_path, local_library_path); 408 417 409 418 } 410 else if (!isGsdlRemote){ // local GS3, start the local tomcat419 else { // local GS3, start the local tomcat 411 420 412 421 GS3ServerThread thread = new GS3ServerThread(gsdl3_src_path, "restart"); 413 422 thread.start(); 414 423 415 // The Java virtual machine shuts down in response to two kinds of events:416 // - The program exits normally, when the last non-daemon thread exits or when the exit (equivalently, System.exit) method is invoked, or417 // - The virtual machine is terminated in response to a user interrupt, such as typing ^C, or a system-wide event, such as user logoff or system shutdown.418 // https://coderanch.com/t/328888/java/Killing-process-spawned-Runtime-exec419 Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {420 public void run() {421 422 if(Gatherer.exit != true) { // unexpected termination, such as Ctrl-C won't set Gatherer.exit423 // so still need to at least issue the ant call to stop any running GS3424 // (tomcat and networked Derby Server) by calling GS3ServerThread.stopServer()425 System.err.println("ShutDownHook called...");426 System.err.println("Attempting to forcibly terminate the GS3 server...");427 GS3ServerThread.stopServer();428 }429 }430 }));431 432 424 433 425
Note:
See TracChangeset
for help on using the changeset viewer.