@Override public void run() { if (BeanContainer.isInitialized()) { EMessage.broadcast(this, "APPLICATION SHUTDOWN INITIALIZED...", "*"); LOG.info("preparing shutdown of local database " + persistence.getConnectionUrl()); try { BeanContainer.instance().executeStmt(ENV.get("app.shutdown.statement", "SHUTDOWN"), true, null); Thread.sleep(2000); } catch (Exception e) { LOG.error(e.toString()); } String hsqldbScript = isH2(persistence.getConnectionUrl()) ? persistence.getDefaultSchema() + ".mv.db" : persistence.getDatabase() + ".script"; String backupFile = ENV.getTempPath() + FileUtil.getUniqueFileName(ENV.get("app.database.backup.file", persistence.getDatabase()) + ".zip"); LOG.info("creating database backup to file " + backupFile); FileUtil.writeToZip(backupFile, hsqldbScript, FileUtil.getFileBytes(ENV.getConfigPath() + hsqldbScript, null)); } } }));