X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fruntime%2FCmsContextImpl.java;h=940e329a358fd8deab1a717d5471772d1d042eb2;hb=76a8481ee26616efa0fa59838a93bcad937b2692;hp=ea9a401a4d3fc49ee2f617558432dbc11f170024;hpb=60aa2e64061a09e938d9f6cba35ee3fd66a19828;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/runtime/CmsContextImpl.java b/org.argeo.cms/src/org/argeo/cms/internal/runtime/CmsContextImpl.java index ea9a401a4..940e329a3 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/runtime/CmsContextImpl.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/runtime/CmsContextImpl.java @@ -3,7 +3,6 @@ package org.argeo.cms.internal.runtime; import java.lang.management.ManagementFactory; import java.util.ArrayList; import java.util.HashMap; -import java.util.IdentityHashMap; import java.util.List; import java.util.Locale; import java.util.Map; @@ -92,7 +91,16 @@ public class CmsContextImpl implements CmsContext { // // }.open(); - checkReadiness(); + new Thread(() -> { + while (!checkReadiness()) { + try { + Thread.sleep(500); + } catch (InterruptedException e) { + } + } + }, "Check readiness").start(); + + // checkReadiness(); setInstance(this); } @@ -105,10 +113,13 @@ public class CmsContextImpl implements CmsContext { * Checks whether the deployment is available according to expectations, and * mark it as available. */ - private void checkReadiness() { + private boolean checkReadiness() { if (isAvailable()) - return; - if (cmsDeployment != null && userAdmin != null) { + return true; + if (cmsDeployment == null) + return false; + + if (((CmsDeploymentImpl) cmsDeployment).allExpectedServicesAvailable() && userAdmin != null) { String data = KernelUtils.getFrameworkProp(KernelUtils.OSGI_INSTANCE_AREA); String state = KernelUtils.getFrameworkProp(KernelUtils.OSGI_CONFIGURATION_AREA); availableSince = System.currentTimeMillis(); @@ -125,8 +136,11 @@ public class CmsContextImpl implements CmsContext { if (log.isTraceEnabled()) log.trace("Kernel initialization took " + initDuration + "ms"); tributeToFreeSoftware(initDuration); + + return true; } else { - throw new IllegalStateException("Deployment is not available"); + return false; + // throw new IllegalStateException("Deployment is not available"); } }