X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FCmsDeployment.java;h=20418ec4d21e803890e838abdfaec1b092a24337;hb=aa3eae8ed83ae3b8b3cc98826ee02d121795cb60;hp=0711be2e885674dc4a4cb9fdb05e20720e7cdcfd;hpb=810aecacb19916bade7e4bcfcbbb54c301f672df;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDeployment.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDeployment.java index 0711be2e8..20418ec4d 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDeployment.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDeployment.java @@ -34,6 +34,7 @@ import org.argeo.node.security.CryptoKeyring; import org.argeo.node.security.Keyring; import org.argeo.osgi.useradmin.UserAdminConf; import org.argeo.util.LangUtils; +import org.eclipse.equinox.http.jetty.JettyConfigurator; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.framework.Constants; @@ -192,12 +193,25 @@ public class CmsDeployment implements NodeDeployment { public void shutdown() { if (nodeHttp != null) nodeHttp.destroy(); + + try { + JettyConfigurator.stopServer(KernelConstants.DEFAULT_JETTY_SERVER); + } catch (Exception e) { + log.error("Cannot stop default Jetty server.", e); + } + if (deployConfig != null) { new Thread(() -> deployConfig.save(), "Save Argeo Deploy Config").start(); } } - private void checkReadiness() { + /** + * Checks whether the deployment is available according to expectations, and + * mark it as available. + */ + private synchronized void checkReadiness() { + if (isAvailable()) + return; if (nodeAvailable && userAdminAvailable && (httpExpected ? httpAvailable : true)) { String data = KernelUtils.getFrameworkProp(KernelUtils.OSGI_INSTANCE_AREA); String state = KernelUtils.getFrameworkProp(KernelUtils.OSGI_CONFIGURATION_AREA); @@ -369,10 +383,14 @@ public class CmsDeployment implements NodeDeployment { } @Override - public Long getAvailableSince() { + public synchronized Long getAvailableSince() { return availableSince; } + public synchronized boolean isAvailable() { + return availableSince != null; + } + private class RepositoryContextStc extends ServiceTracker { public RepositoryContextStc() {