From 1054e1fe50aa255c7b47805e7dc5e7abad20076b Mon Sep 17 00:00:00 2001 From: chenson42 Date: Thu, 12 May 2011 15:25:47 +0000 Subject: [PATCH] SYMMETRICDS-437 --- .../resources/symmetric-default.properties | 2 +- .../src/main/deploy/samples/insert_sample.sql | 7 +++ .../src/main/deploy/web/WEB-INF/web.xml | 5 +- .../symmetric/SymmetricWebServer.java | 16 +----- .../integrate/RunSqlReloadListener.java | 55 +++++++++++++++++++ 5 files changed, 67 insertions(+), 18 deletions(-) create mode 100644 symmetric/symmetric-server/src/main/java/org/jumpmind/symmetric/integrate/RunSqlReloadListener.java diff --git a/symmetric/symmetric-core/src/main/resources/symmetric-default.properties b/symmetric/symmetric-core/src/main/resources/symmetric-default.properties index ca91f434e1..ac531871a5 100644 --- a/symmetric/symmetric-core/src/main/resources/symmetric-default.properties +++ b/symmetric/symmetric-core/src/main/resources/symmetric-default.properties @@ -260,7 +260,7 @@ compression.strategy=0 # The base servlet path for embedding SymmetricDS with-in another web application # # Tags: transport -web.base.servlet.path= +web.base.servlet.path=/sync # Indicate whether the batch servlet (which allows specific batches to be requested) is enabled. # diff --git a/symmetric/symmetric-server/src/main/deploy/samples/insert_sample.sql b/symmetric/symmetric-server/src/main/deploy/samples/insert_sample.sql index e814fae774..6abd0ff635 100644 --- a/symmetric/symmetric-server/src/main/deploy/samples/insert_sample.sql +++ b/symmetric/symmetric-server/src/main/deploy/samples/insert_sample.sql @@ -15,11 +15,18 @@ values (900, 11000001, 0.10, 1, 0); -- -- Nodes -- +delete from sym_node_group_link; +delete from sym_node_group; +delete from sym_node_identity; +delete from sym_node_security; +delete from sym_node; + insert into sym_node_group (node_group_id, description) values ('corp', 'Central Office'); insert into sym_node_group (node_group_id, description) values ('store', 'Store'); + insert into sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action) values ('store', 'corp', 'P'); insert into sym_node_group_link (source_node_group_id, target_node_group_id, data_event_action) diff --git a/symmetric/symmetric-server/src/main/deploy/web/WEB-INF/web.xml b/symmetric/symmetric-server/src/main/deploy/web/WEB-INF/web.xml index 359144bb5e..b3371d9979 100644 --- a/symmetric/symmetric-server/src/main/deploy/web/WEB-INF/web.xml +++ b/symmetric/symmetric-server/src/main/deploy/web/WEB-INF/web.xml @@ -5,9 +5,6 @@ http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> SymmetricDS - - - contextConfigLocation @@ -36,7 +33,7 @@ http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" SymmetricServlet - /* + /sync/* \ No newline at end of file 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 03eb6d43da..9d13888095 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 @@ -39,11 +39,8 @@ import org.eclipse.jetty.security.HashLoginService; import org.eclipse.jetty.security.authentication.BasicAuthenticator; import org.eclipse.jetty.server.Connector; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.bio.SocketConnector; -import org.eclipse.jetty.server.handler.ContextHandlerCollection; -import org.eclipse.jetty.server.handler.MovedContextHandler; import org.eclipse.jetty.server.nio.SelectChannelConnector; import org.eclipse.jetty.server.ssl.SslSocketConnector; import org.eclipse.jetty.webapp.WebAppContext; @@ -86,7 +83,7 @@ public enum Mode { protected boolean createJmxServer = true; - protected String webHome = "/sync"; + protected String webHome = "/"; protected int maxIdleTime = 7200000; @@ -175,16 +172,9 @@ public SymmetricWebServer start(int port, int securePort, Mode mode) throws Exce webapp = new WebAppContext(); webapp.setContextPath(webHome); webapp.setWar(webAppDir); - webapp.getSessionHandler().getSessionManager().setMaxInactiveInterval(maxIdleTime/1000); - - MovedContextHandler movedHandler = new MovedContextHandler(); - movedHandler.setContextPath("/"); - movedHandler.setNewContextURL(webHome); - - ContextHandlerCollection contexts = new ContextHandlerCollection(); - contexts.setHandlers(new Handler[] { movedHandler, webapp }); + webapp.getSessionHandler().getSessionManager().setMaxInactiveInterval(maxIdleTime/1000); - server.setHandler(contexts); + server.setHandler(webapp); if (!StringUtils.isBlank(propertiesFile)) { System.setProperty(Constants.OVERRIDE_PROPERTIES_FILE_1, propertiesFile); diff --git a/symmetric/symmetric-server/src/main/java/org/jumpmind/symmetric/integrate/RunSqlReloadListener.java b/symmetric/symmetric-server/src/main/java/org/jumpmind/symmetric/integrate/RunSqlReloadListener.java new file mode 100644 index 0000000000..1966541604 --- /dev/null +++ b/symmetric/symmetric-server/src/main/java/org/jumpmind/symmetric/integrate/RunSqlReloadListener.java @@ -0,0 +1,55 @@ +package org.jumpmind.symmetric.integrate; + +import org.apache.commons.lang.StringUtils; +import org.jumpmind.symmetric.db.IDbDialect; +import org.jumpmind.symmetric.load.IReloadListener; +import org.jumpmind.symmetric.model.Node; +import org.jumpmind.symmetric.service.IDataService; + +public class RunSqlReloadListener implements IReloadListener { + + private IDataService dataService; + + private IDbDialect dbDialect; + + private String sqlToRunAtTargetBeforeReload; + + private String sqlToRunAtTargetAfterReload; + + public void afterReload(Node node) { + if (StringUtils.isNotBlank(sqlToRunAtTargetAfterReload)) { + dataService.sendSQL(node.getNodeId(), dbDialect.getDefaultCatalog(), + dbDialect.getDefaultSchema(), "SYM_TRIGGER", sqlToRunAtTargetAfterReload, true); + } + } + + public void beforeReload(Node node) { + if (StringUtils.isNotBlank(sqlToRunAtTargetBeforeReload)) { + dataService + .sendSQL(node.getNodeId(), dbDialect.getDefaultCatalog(), + dbDialect.getDefaultSchema(), "SYM_TRIGGER", + sqlToRunAtTargetBeforeReload, true); + } + } + + public boolean isAutoRegister() { + return true; + } + + public void setDataService(IDataService dataService) { + this.dataService = dataService; + } + + public void setDbDialect(IDbDialect dbDialect) { + this.dbDialect = dbDialect; + } + + public void setSqlToRunAtTargetAfterReload(String sqlToRunAfterReload) { + this.sqlToRunAtTargetAfterReload = sqlToRunAfterReload; + } + + public void setSqlToRunAtTargetBeforeReload(String sqlToRunBeforeReload) { + this.sqlToRunAtTargetBeforeReload = sqlToRunBeforeReload; + } + +}