diff options
author | Simon Brandhof <simon.brandhof@sonarsource.com> | 2014-09-12 15:29:57 +0200 |
---|---|---|
committer | Simon Brandhof <simon.brandhof@sonarsource.com> | 2014-09-12 15:29:57 +0200 |
commit | 3166381a9020db85e45bfef8ebea9f841736af69 (patch) | |
tree | b78c6b8222bd2e6d9bf525ba053644761b78a641 /server/sonar-server/src | |
parent | 008297c01720142798feb575d7caa09b5f0db485 (diff) | |
download | sonarqube-3166381a9020db85e45bfef8ebea9f841736af69.tar.gz sonarqube-3166381a9020db85e45bfef8ebea9f841736af69.zip |
SONAR-4898 simplify MonitoredProcess implementations
Diffstat (limited to 'server/sonar-server/src')
-rw-r--r-- | server/sonar-server/src/main/java/org/sonar/server/app/EmbeddedTomcat.java | 83 | ||||
-rw-r--r-- | server/sonar-server/src/main/java/org/sonar/server/app/WebServer.java | 5 |
2 files changed, 36 insertions, 52 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/app/EmbeddedTomcat.java b/server/sonar-server/src/main/java/org/sonar/server/app/EmbeddedTomcat.java index a7146eda913..01a5305c53d 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/app/EmbeddedTomcat.java +++ b/server/sonar-server/src/main/java/org/sonar/server/app/EmbeddedTomcat.java @@ -20,16 +20,7 @@ package org.sonar.server.app; import com.google.common.base.Throwables; -import com.google.common.util.concurrent.Uninterruptibles; -import org.apache.catalina.Container; -import org.apache.catalina.Executor; -import org.apache.catalina.Lifecycle; -import org.apache.catalina.LifecycleEvent; -import org.apache.catalina.LifecycleListener; -import org.apache.catalina.LifecycleState; -import org.apache.catalina.Server; -import org.apache.catalina.Service; -import org.apache.catalina.connector.Connector; +import org.apache.catalina.LifecycleException; import org.apache.catalina.core.StandardContext; import org.apache.catalina.startup.Tomcat; import org.apache.commons.io.FileUtils; @@ -37,13 +28,11 @@ import org.slf4j.LoggerFactory; import org.sonar.process.Props; import java.io.File; -import java.util.concurrent.TimeUnit; class EmbeddedTomcat { private final Props props; private Tomcat tomcat = null; - private Thread hook = null; private volatile StandardContext webappContext; EmbeddedTomcat(Props props) { @@ -51,53 +40,43 @@ class EmbeddedTomcat { } void start() { - if (tomcat != null || hook != null) { - throw new IllegalStateException("Server is already started"); - } - - try { - // '%2F' (slash /) and '%5C' (backslash \) are permitted as path delimiters in URLs - // See Ruby on Rails url_for - System.setProperty("org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH", "true"); + // '%2F' (slash /) and '%5C' (backslash \) are permitted as path delimiters in URLs + // See Ruby on Rails url_for + System.setProperty("org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH", "true"); - System.setProperty("org.apache.catalina.startup.EXIT_ON_INIT_FAILURE", "true"); + System.setProperty("org.apache.catalina.startup.EXIT_ON_INIT_FAILURE", "true"); - tomcat = new Tomcat(); - // Initialize directories - String basedir = tomcatBasedir().getAbsolutePath(); - tomcat.setBaseDir(basedir); - tomcat.getHost().setAppBase(basedir); - tomcat.getHost().setAutoDeploy(false); - tomcat.getHost().setCreateDirs(false); - tomcat.getHost().setDeployOnStartup(true); - Logging.configure(tomcat, props); - Connectors.configure(tomcat, props); - webappContext = Webapp.configure(tomcat, props); + tomcat = new Tomcat(); + // Initialize directories + String basedir = tomcatBasedir().getAbsolutePath(); + tomcat.setBaseDir(basedir); + tomcat.getHost().setAppBase(basedir); + tomcat.getHost().setAutoDeploy(false); + tomcat.getHost().setCreateDirs(false); + tomcat.getHost().setDeployOnStartup(true); + Logging.configure(tomcat, props); + Connectors.configure(tomcat, props); + webappContext = Webapp.configure(tomcat, props); + try { tomcat.start(); - waitForWebappReady(); - - } catch (Exception e) { + } catch (LifecycleException e) { Throwables.propagate(e); } } - private void waitForWebappReady() { - while (true) { - switch (webappContext.getState()) { - case NEW: - case INITIALIZING: - case INITIALIZED: - case STARTING_PREP: - case STARTING: - Uninterruptibles.sleepUninterruptibly(300L, TimeUnit.MILLISECONDS); - break; - case STARTED: - // ok - return; - default: - // problem, stopped or failed - throw new IllegalStateException("YYY Webapp did not start"); - } + boolean isReady() { + switch (webappContext.getState()) { + case NEW: + case INITIALIZING: + case INITIALIZED: + case STARTING_PREP: + case STARTING: + return false; + case STARTED: + return true; + default: + // problem, stopped or failed + throw new IllegalStateException("Webapp did not start"); } } diff --git a/server/sonar-server/src/main/java/org/sonar/server/app/WebServer.java b/server/sonar-server/src/main/java/org/sonar/server/app/WebServer.java index 94bc1214f0f..87ffa5c5bee 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/app/WebServer.java +++ b/server/sonar-server/src/main/java/org/sonar/server/app/WebServer.java @@ -41,6 +41,11 @@ public class WebServer implements MonitoredProcess { } @Override + public boolean isReady() { + return tomcat.isReady(); + } + + @Override public void terminate() { tomcat.terminate(); } |