From 3b20b558143042f3211d9698177bc7682c587c0f Mon Sep 17 00:00:00 2001 From: chenson42 Date: Fri, 1 Apr 2011 14:05:39 +0000 Subject: [PATCH] fix startup issue --- .../jumpmind/symmetric/common/Constants.java | 4 +++- .../symmetric/common/DeploymentType.java | 5 +++++ .../resources/symmetric-messages.properties | 1 + .../symmetric/SymmetricWebServer.java | 20 +++++++++---------- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/symmetric/symmetric-core/src/main/java/org/jumpmind/symmetric/common/Constants.java b/symmetric/symmetric-core/src/main/java/org/jumpmind/symmetric/common/Constants.java index 0173d9d850..32c2381d57 100644 --- a/symmetric/symmetric-core/src/main/java/org/jumpmind/symmetric/common/Constants.java +++ b/symmetric/symmetric-core/src/main/java/org/jumpmind/symmetric/common/Constants.java @@ -25,7 +25,9 @@ final public class Constants { private Constants() { - } + } + + public static final String PROP_STANDALONE_WEB = "standalone.web"; public static final String PLEASE_SET_ME = "please set me"; diff --git a/symmetric/symmetric-core/src/main/java/org/jumpmind/symmetric/common/DeploymentType.java b/symmetric/symmetric-core/src/main/java/org/jumpmind/symmetric/common/DeploymentType.java index 9bdba0f99d..2bfeaef832 100644 --- a/symmetric/symmetric-core/src/main/java/org/jumpmind/symmetric/common/DeploymentType.java +++ b/symmetric/symmetric-core/src/main/java/org/jumpmind/symmetric/common/DeploymentType.java @@ -34,6 +34,11 @@ public class DeploymentType { private boolean professionalRegistered; private boolean mobileRegistered; private boolean webServerRegistered; + + public DeploymentType() { + webServerRegistered = System.getProperty(Constants.PROP_STANDALONE_WEB, "false").equals("true"); + System.getProperties().remove(Constants.PROP_STANDALONE_WEB); + } public void setEngineRegistered(boolean engineRegistered) { this.engineRegistered = engineRegistered; diff --git a/symmetric/symmetric-core/src/main/resources/symmetric-messages.properties b/symmetric/symmetric-core/src/main/resources/symmetric-messages.properties index 88f14a5cdc..5a0a7f38c3 100644 --- a/symmetric/symmetric-core/src/main/resources/symmetric-messages.properties +++ b/symmetric/symmetric-core/src/main/resources/symmetric-messages.properties @@ -300,6 +300,7 @@ URLConnectingFailure=Could not connect to the %s node's transport because of a b WebServerInitializeError=Failed to initialize the web server context. WebServerStarting=About to start SymmetricDS web server on port %d WebServerSecureStarting=About to start SymmetricDS web server on secure port %d +WebServerAboutToJoin=Joining the web server main thread XMLSending=Sending XML to IPublisher: %s Launcher.Option.server=Start an embedded instance of SymmetricDS that accepts HTTP. Launcher.Option.client=Start an embedded, client-only, instance of SymmetricDS. diff --git a/symmetric/symmetric-server/src/main/java/org/jumpmind/symmetric/SymmetricWebServer.java b/symmetric/symmetric-server/src/main/java/org/jumpmind/symmetric/SymmetricWebServer.java index adea9f4de8..30dd3cb6d2 100644 --- a/symmetric/symmetric-server/src/main/java/org/jumpmind/symmetric/SymmetricWebServer.java +++ b/symmetric/symmetric-server/src/main/java/org/jumpmind/symmetric/SymmetricWebServer.java @@ -62,7 +62,7 @@ public class SymmetricWebServer { protected static final ILog log = LogFactory.getLog(SymmetricWebServer.class); - protected static final String DEFAULT_WEBAPP_DIR = "../web"; + protected static final String DEFAULT_WEBAPP_DIR = "../web"; /** * The type of HTTP connection to create for this SymmetricDS web server @@ -155,7 +155,11 @@ public SymmetricWebServer startMixed(int port, int securePort) throws Exception return start(port, securePort, Mode.MIXED); } - public SymmetricWebServer start(int port, int securePort, Mode mode) throws Exception { + public SymmetricWebServer start(int port, int securePort, Mode mode) throws Exception { + + // indicate to the app that we are in standalone mode + System.setProperty(Constants.PROP_STANDALONE_WEB, "true"); + server = new Server(); server.setConnectors(getConnectors(port, securePort, mode)); @@ -165,7 +169,6 @@ public SymmetricWebServer start(int port, int securePort, Mode mode) throws Exce webapp.setContextPath(webHome); webapp.setWar(webAppDir); webapp.getSessionHandler().getSessionManager().setMaxInactiveInterval(maxIdleTime/1000); - server.setHandler(webapp); if (!StringUtils.isBlank(propertiesFile)) { @@ -178,14 +181,9 @@ public SymmetricWebServer start(int port, int securePort, Mode mode) throws Exce int httpJmxPort = port != 0 ? port + 1 : securePort + 1; registerHttpJmxAdaptor(httpJmxPort); } - - do { - AppUtils.sleep(50); - } while (getEngine() == null); - - getEngine().getDeploymentType().setWebServerRegistered(true); - - if (join) { + + if (join) { + log.info("WebServerAboutToJoin"); server.join(); }