Changeset 31813
- Timestamp:
- 2017-07-21T18:37:30+12:00 (7 years ago)
- Location:
- main/trunk/gli/src/org/greenstone/gatherer
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/gli/src/org/greenstone/gatherer/Gatherer.java
r31718 r31813 383 383 if (!GS3) { 384 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 })); 408 385 409 } 386 410 else if (!isGsdlRemote) { // local GS3, start the local tomcat … … 394 418 // https://coderanch.com/t/328888/java/Killing-process-spawned-Runtime-exec 395 419 Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { 396 public void run() { 420 public void run() { 397 421 398 422 if(Gatherer.exit != true) { // unexpected termination, such as Ctrl-C won't set Gatherer.exit -
main/trunk/gli/src/org/greenstone/gatherer/greenstone/LocalLibraryServer.java
r24906 r31813 38 38 import org.greenstone.gatherer.Gatherer; 39 39 import org.greenstone.gatherer.util.PortFinder; 40 import org.greenstone.gatherer.util.SafeProcess; 40 41 import org.greenstone.gatherer.util.Utility; 41 42 … … 399 400 if (isPersistentServer) { 400 401 config(QUIT_COMMAND); 401 } else { 402 } else { 402 403 boolean success = sendMessageToServer("QUIT\n"); 403 404 try { … … 451 452 452 453 running = false; 454 } 455 456 // This method does the approximate equivalent of util.GSServerThread.stopServer() 457 // On unexpected, unnatural termination of GLI, call this to send the web-stop message the local library server to stop 458 static public void forceStopServer() { 459 SafeProcess p = null; 460 if (Utility.isWindows()) { 461 // cmd /C "cd "C:\path\to\greenstone3" && ant stop" 462 p = new SafeProcess("cmd /C \"cd \"" + Configuration.gsdl_path + File.separator + "\" && gsicontrol.bat web-stop\""); 463 } else { 464 p = new SafeProcess(new String[]{"/bin/bash", "-c", "cd \"" + Configuration.gsdl_path + "\" && ./gsicontrol.sh web-stop"}); 465 } 466 int result = p.runProcess(); 467 if(result == 0) { 468 System.err.println("Successfully stopped GS2 server."); 469 //DebugStream.println("********** SUCCESSFULLY stopped THE GS2 SERVER ON EXIT"); 470 } 471 else { 472 System.err.println("********** FAILED TO SUCCESSFULLY stop THE GS2 SERVER ON EXIT"); 473 } 474 p = null; 453 475 } 454 476
Note:
See TracChangeset
for help on using the changeset viewer.