Make Jetty start more robust.
authorMathieu Baudier <mbaudier@argeo.org>
Thu, 24 Oct 2019 07:56:12 +0000 (09:56 +0200)
committerMathieu Baudier <mbaudier@argeo.org>
Thu, 24 Oct 2019 07:56:12 +0000 (09:56 +0200)
org.argeo.cms/src/org/argeo/cms/internal/kernel/DeployConfig.java

index 41b064c9c0daee89a83b5ffafe271ce0409491d1..4a75f519d0782e2077ea3ae968ff1413ef2cf7dd 100644 (file)
@@ -33,6 +33,7 @@ import org.osgi.service.cm.ConfigurationAdmin;
 import org.osgi.service.cm.ConfigurationEvent;
 import org.osgi.service.cm.ConfigurationListener;
 
+/** Manages the LDIF-based deployment configuration. */
 class DeployConfig implements ConfigurationListener {
        private final Log log = LogFactory.getLog(getClass());
        private final BundleContext bc = FrameworkUtil.getBundle(getClass()).getBundleContext();
@@ -146,8 +147,22 @@ class DeployConfig implements ConfigurationListener {
                if (!webServerConfig.isEmpty()) {
                        webServerConfig.put("customizer.class", KernelConstants.CMS_JETTY_CUSTOMIZER_CLASS);
                }
+
+               int tryCount = 60;
                try {
-                       JettyConfigurator.startServer(KernelConstants.DEFAULT_JETTY_SERVER, webServerConfig);
+                       tryGettyJetty: while (tryCount > 0) {
+                               try {
+                                       JettyConfigurator.startServer(KernelConstants.DEFAULT_JETTY_SERVER, webServerConfig);
+                                       break tryGettyJetty;
+                               } catch (IllegalStateException e) {
+                                       // Jetty may not be ready
+                                       try {
+                                               Thread.sleep(1000);
+                                       } catch (Exception e1) {
+                                               // silent
+                                       }
+                               }
+                       }
                } catch (Exception e) {
                        log.error("Cannot start default Jetty server with config " + webServerConfig, e);
                }