# HG changeset patch # User Giannis Vlachopoulos # Date 1410446018 -10800 # Node ID c4055a32472cfe8c35318325bc0c5ad7b864e6f6 # Parent 8d50279a662c8ce0bbc9bec0b277f885807366e2# Parent a4c6d008a5766666adfc615def1411253eafccf5 merge diff -r 8d50279a662c -r c4055a32472c endpoint/src/main/java/eu/earthobservatory/org/StrabonEndpoint/StrabonBeanWrapper.java --- a/endpoint/src/main/java/eu/earthobservatory/org/StrabonEndpoint/StrabonBeanWrapper.java Thu Sep 11 17:32:57 2014 +0300 +++ b/endpoint/src/main/java/eu/earthobservatory/org/StrabonEndpoint/StrabonBeanWrapper.java Thu Sep 11 17:33:38 2014 +0300 @@ -152,7 +152,8 @@ // use PostGIS as the default database backend this.strabon = new eu.earthobservatory.runtime.postgis.Strabon(databaseName, user, password, port, serverName, checkForLockTable); } - + + installSIGTERMHandler(this.strabon); } catch (Exception e) { logger.error("[StrabonEndpoint] Exception occured while creating Strabon. {}\n{}", e.getMessage(), this.getDetails()); @@ -163,6 +164,33 @@ return true; } + /** + * Registers a handler for SIGTERM signals, like Ctrl-C. One may send such a signal + * at the command prompt, when running Strabon Endpoint from the command line, i.e., + * using the endpoint-exec module. + * + * @param strabon The strabon instance + */ + private static void installSIGTERMHandler(final Strabon strabon) { + if (logger.isDebugEnabled()) { + logger.info("[StrabonEndpoint] Installing handler for SIGTERM signals..."); + } + + // register the handler + Runtime.getRuntime().addShutdownHook(new Thread() { + + @Override + public void run() { + // just call the Strabon.close() method + strabon.close(); + } + }); + + if (logger.isDebugEnabled()) { + logger.info("[StrabonEndpoint] Handler for SIGTERM signals installed successfully."); + } + } + public Strabon getStrabon() { return strabon; }