Return-Path: X-Original-To: apmail-airavata-commits-archive@www.apache.org Delivered-To: apmail-airavata-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id A360A10101 for ; Wed, 5 Mar 2014 01:27:24 +0000 (UTC) Received: (qmail 83568 invoked by uid 500); 5 Mar 2014 01:27:17 -0000 Delivered-To: apmail-airavata-commits-archive@airavata.apache.org Received: (qmail 83532 invoked by uid 500); 5 Mar 2014 01:27:17 -0000 Mailing-List: contact commits-help@airavata.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@airavata.apache.org Delivered-To: mailing list commits@airavata.apache.org Received: (qmail 83524 invoked by uid 99); 5 Mar 2014 01:27:17 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 05 Mar 2014 01:27:17 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id E68A99365A2; Wed, 5 Mar 2014 01:27:16 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: samindaw@apache.org To: commits@airavata.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: git commit: https://issues.apache.org/jira/browse/AIRAVATA-1046 Date: Wed, 5 Mar 2014 01:27:16 +0000 (UTC) Repository: airavata Updated Branches: refs/heads/master 893156a89 -> edd26be83 https://issues.apache.org/jira/browse/AIRAVATA-1046 Project: http://git-wip-us.apache.org/repos/asf/airavata/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/edd26be8 Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/edd26be8 Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/edd26be8 Branch: refs/heads/master Commit: edd26be83e91048e103b222a07dd1c84b6a87f40 Parents: 893156a Author: Saminda Wijeratne Authored: Tue Mar 4 20:26:59 2014 -0500 Committer: Saminda Wijeratne Committed: Tue Mar 4 20:26:59 2014 -0500 ---------------------------------------------------------------------- .../airavata/api/server/AiravataAPIServer.java | 84 ++++++++-- .../api/server/util/RegistryInitUtil.java | 15 ++ .../orchestrator/server/OrchestratorServer.java | 73 +++++++-- modules/server/pom.xml | 52 +----- .../org/apache/airavata/server/ServerMain.java | 164 ++++++------------- pom.xml | 2 +- 6 files changed, 207 insertions(+), 183 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata/blob/edd26be8/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java index 886b2f7..68bdd03 100644 --- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java +++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/AiravataAPIServer.java @@ -27,6 +27,7 @@ import org.apache.airavata.api.error.AiravataSystemException; import org.apache.airavata.api.server.handler.AiravataServerHandler; import org.apache.airavata.api.server.util.RegistryInitUtil; import org.apache.airavata.common.utils.AiravataUtils; +import org.apache.airavata.common.utils.IServer; import org.apache.thrift.server.TServer; import org.apache.thrift.server.TSimpleServer; import org.apache.thrift.transport.TServerSocket; @@ -35,38 +36,99 @@ import org.apache.thrift.transport.TTransportException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class AiravataAPIServer { +public class AiravataAPIServer implements IServer{ private final static Logger logger = LoggerFactory.getLogger(AiravataAPIServer.class); //FIXME: Read the port from airavata-server.config file private static final int THRIFT_SERVER_PORT = 8930; + private ServerStatus status; + private TSimpleServer server; - public static void StartAiravataServer(Airavata.Processor mockAiravataServer) throws AiravataSystemException { + public AiravataAPIServer() { + setStatus(ServerStatus.STOPPED); + } + + public void StartAiravataServer(Airavata.Processor mockAiravataServer) throws AiravataSystemException { try { AiravataUtils.setExecutionAsServer(); RegistryInitUtil.initializeDB(); TServerTransport serverTransport = new TServerSocket(THRIFT_SERVER_PORT); - TServer server = new TSimpleServer( + server = new TSimpleServer( new TServer.Args(serverTransport).processor(mockAiravataServer)); logger.info("Starting Airavata Mock Airavata Server on Port " + THRIFT_SERVER_PORT); logger.info("Listening to Airavata Clients ...."); - server.serve(); + new Thread() { + public void run() { + server.serve(); + RegistryInitUtil.stopDerbyInServerMode(); + } + }.start(); + setStatus(ServerStatus.STARTED); } catch (TTransportException e) { logger.error(e.getMessage()); + setStatus(ServerStatus.FAILED); + RegistryInitUtil.stopDerbyInServerMode(); throw new AiravataSystemException(AiravataErrorType.INTERNAL_ERROR); } } public static void main(String[] args) { - Airavata.Processor mockAiravataServer = - new Airavata.Processor(new AiravataServerHandler()); - try { - StartAiravataServer(mockAiravataServer); - } catch (AiravataSystemException e) { - e.printStackTrace(); - } + try { + AiravataAPIServer server = new AiravataAPIServer(); + server.start(); +// System.out.println(server.getStatus()+":"+server.getStatus().getTime()); +// Thread.sleep(3000); +// server.stop(); +// System.out.println(server.getStatus()+":"+server.getStatus().getTime()); +// Thread.sleep(3000); +// server.start(); +// System.out.println(server.getStatus()+":"+server.getStatus().getTime()); +// Thread.sleep(3000); +// server.stop(); + } catch (Exception e) { + e.printStackTrace(); + } } + @Override + public void start() throws Exception { + setStatus(ServerStatus.STARTING); + Airavata.Processor mockAiravataServer = + new Airavata.Processor(new AiravataServerHandler()); + StartAiravataServer(mockAiravataServer); + } + + @Override + public void stop() throws Exception { + if (server.isServing()){ + server.stop(); + setStatus(ServerStatus.STOPPED); + logger.info("Airavata API Server Stopped."); + } + + } + + @Override + public void restart() throws Exception { + stop(); + start(); + } + + @Override + public void configure() throws Exception { + // TODO Auto-generated method stub + + } + + @Override + public ServerStatus getStatus() throws Exception { + return status; + } + + private void setStatus(ServerStatus stat){ + status=stat; + status.updateTime(); + } } http://git-wip-us.apache.org/repos/asf/airavata/blob/edd26be8/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/RegistryInitUtil.java ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/RegistryInitUtil.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/RegistryInitUtil.java index 5d45e3c..2cb9c78 100644 --- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/RegistryInitUtil.java +++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/RegistryInitUtil.java @@ -157,6 +157,21 @@ public class RegistryInitUtil { "specified port is available"); } } + + public static void stopDerbyInServerMode() { + try { + System.setProperty(DERBY_SERVER_MODE_SYS_PROPERTY, "false"); + if (server!=null){ + server.shutdown(); + } + } catch (IOException e) { + logger.error("Unable to start Apache derby in the server mode! Check whether " + + "specified port is available"); + } catch (Exception e) { + logger.error("Unable to start Apache derby in the server mode! Check whether " + + "specified port is available"); + } + } public static int getPort(String jdbcURL){ try{ http://git-wip-us.apache.org/repos/asf/airavata/blob/edd26be8/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServer.java ---------------------------------------------------------------------- diff --git a/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServer.java b/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServer.java index fba9c05..a333bcf 100644 --- a/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServer.java +++ b/modules/orchestrator/airavata-orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServer.java @@ -21,6 +21,7 @@ package org.apache.airavata.orchestrator.server; +import org.apache.airavata.common.utils.IServer; import org.apache.airavata.orchestrator.cpi.OrchestratorService; import org.apache.thrift.server.TServer; import org.apache.thrift.server.TSimpleServer; @@ -30,39 +31,87 @@ import org.apache.thrift.transport.TTransportException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class OrchestratorServer { +public class OrchestratorServer implements IServer{ private final static Logger logger = LoggerFactory.getLogger(OrchestratorServer.class); //FIXME: Read the port from airavata-server.config file private static final int ORCHESTRATOT_SERVER_PORT = 8940; + private ServerStatus status; - public static final String TESTARGUMENTTOHANDLER = "testing"; + private TSimpleServer server; + public static final String TESTARGUMENTTOHANDLER = "testing"; + public OrchestratorServer() { + setStatus(ServerStatus.STOPPED); + } - public static void StartOrchestratorServer(OrchestratorService.Processor orchestratorServerHandlerProcessor) + public void StartOrchestratorServer(OrchestratorService.Processor orchestratorServerHandlerProcessor) throws Exception { try { TServerTransport serverTransport = new TServerSocket(ORCHESTRATOT_SERVER_PORT); - TServer server = new TSimpleServer( + server = new TSimpleServer( new TServer.Args(serverTransport).processor(orchestratorServerHandlerProcessor)); logger.info("Starting Orchestrator Server on Port " + ORCHESTRATOT_SERVER_PORT); logger.info("Listening to Orchestrator Clients ...."); - server.serve(); + new Thread() { + public void run() { + server.serve(); + } + }.start(); + setStatus(ServerStatus.STARTED); } catch (TTransportException e) { logger.error(e.getMessage()); + setStatus(ServerStatus.FAILED); } } public static void main(String[] args) { - OrchestratorService.Processor orchestratorServerHandlerProcessor = - new OrchestratorService.Processor(new OrchestratorServerHandler()); - try { - StartOrchestratorServer(orchestratorServerHandlerProcessor); - } catch (Exception e) { - e.printStackTrace(); - } + try { + new OrchestratorServer().start(); + } catch (Exception e) { + e.printStackTrace(); + } } + @Override + public void start() throws Exception { + setStatus(ServerStatus.STARTING); + OrchestratorService.Processor mockAiravataServer = + new OrchestratorService.Processor(new OrchestratorServerHandler()); + StartOrchestratorServer(mockAiravataServer); + } + + @Override + public void stop() throws Exception { + if (server.isServing()){ + server.stop(); + setStatus(ServerStatus.STOPPED); + logger.info("Orchestrator Server Stopped."); + } + + } + + @Override + public void restart() throws Exception { + stop(); + start(); + } + + @Override + public void configure() throws Exception { + // TODO Auto-generated method stub + + } + + @Override + public ServerStatus getStatus() throws Exception { + return status; + } + + private void setStatus(ServerStatus stat){ + status=stat; + status.updateTime(); + } } http://git-wip-us.apache.org/repos/asf/airavata/blob/edd26be8/modules/server/pom.xml ---------------------------------------------------------------------- diff --git a/modules/server/pom.xml b/modules/server/pom.xml index 6356da1..a2cfdee 100644 --- a/modules/server/pom.xml +++ b/modules/server/pom.xml @@ -17,32 +17,11 @@ 4.0.0 - airavata-embedded-tomcat - Airavata Embedded Tomcat Implementation - Module for starting embedded tomcat + airavata-standalone-server + Airavata Standalone Server + Module Containing Classes which start the Airavata Standalone Server - org.apache.tomcat.embed - tomcat-embed-core - 7.0.22 - - - javax.servlet - javax.servlet-api - 3.0.1 - provided - - - org.apache.tomcat.embed - tomcat-embed-logging-juli - 7.0.22 - - - org.apache.tomcat.embed - tomcat-embed-jasper - 7.0.22 - - org.slf4j slf4j-api @@ -61,30 +40,15 @@ airavata-common-utils ${project.version} - - org.apache.tomcat - tomcat-jasper - 7.0.22 - - - org.apache.tomcat - tomcat-jasper-el - 7.0.22 - - - org.apache.tomcat - tomcat-jsp-api - 7.0.22 - - + org.apache.airavata - airavata-rest-mappings + airavata-orchestrator-service ${project.version} - org.ebaysf.web - cors-filter - ${ebay.cors.filter} + org.apache.airavata + airavata-api-server + ${project.version} http://git-wip-us.apache.org/repos/asf/airavata/blob/edd26be8/modules/server/src/main/java/org/apache/airavata/server/ServerMain.java ---------------------------------------------------------------------- diff --git a/modules/server/src/main/java/org/apache/airavata/server/ServerMain.java b/modules/server/src/main/java/org/apache/airavata/server/ServerMain.java index a855c30..fc79645 100644 --- a/modules/server/src/main/java/org/apache/airavata/server/ServerMain.java +++ b/modules/server/src/main/java/org/apache/airavata/server/ServerMain.java @@ -17,128 +17,62 @@ * specific language governing permissions and limitations * under the License. * -*/ + */ package org.apache.airavata.server; -import java.io.File; +import java.util.ArrayList; +import java.util.List; -import org.apache.airavata.common.utils.AiravataUtils; -import org.apache.airavata.common.utils.ServerSettings; -import org.apache.catalina.Wrapper; -import org.apache.catalina.core.StandardContext; -import org.apache.catalina.deploy.FilterDef; -import org.apache.catalina.deploy.FilterMap; -import org.apache.catalina.startup.Tomcat; +import org.apache.airavata.api.server.AiravataAPIServer; +import org.apache.airavata.common.utils.IServer; +import org.apache.airavata.orchestrator.server.OrchestratorServer; public class ServerMain { + private static List servers; - private Tomcat embedded = null; - /** - * Default Constructor - */ - public ServerMain() { - } + static { + servers = new ArrayList(); + servers.add(new AiravataAPIServer()); + servers.add(new OrchestratorServer()); + } + public static void main(String args[]) { + new Thread() { + public void run() { + startAllServers(); + } + }.start(); + Runtime.getRuntime().addShutdownHook(new Thread() { + public void run() { + stopAllServers(); + } + }); + try { + while (true) { + Thread.sleep(10000); + } + } catch (InterruptedException e) { + stopAllServers(); + } + } - /** - * This method Starts the Tomcat server. - */ - public void startTomcat() throws Exception { - AiravataUtils.setExecutionAsServer(); - String protocol = ServerSettings.isEnableHttps() ? "https" : "http"; - BetterTomcat tomcat = new BetterTomcat(Integer.parseInt(ServerSettings.getTomcatPort(protocol))); - tomcat.addContext("/airavata-server", System.getenv("AIRAVATA_HOME")); - Wrapper axis2Servlet = tomcat.addServlet("/airavata-server", "AxisServlet", "org.apache.axis2.transport.http.AxisServlet"); - axis2Servlet.addMapping("/servlet/AxisServlet"); - axis2Servlet.addMapping("*.jws"); - axis2Servlet.addMapping("/services/*"); - axis2Servlet.addInitParameter("axis2.repository.path",System.getenv("AIRAVATA_HOME") + File.separator + "repository"); - axis2Servlet.addInitParameter("axis2.xml.path", System.getenv("AIRAVATA_HOME") + - File.separator + "bin" + File.separator + "axis2.xml"); - axis2Servlet.setLoadOnStartup(1); + private static void stopAllServers() { + for (IServer server : servers) { + try { + server.stop(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } - StandardContext context = (StandardContext)tomcat.getTomcat().addContext("/airavata", System.getenv("AIRAVATA_HOME")); - Wrapper experimentServlet = tomcat.addServlet("/airavata", "Airavata Experiment Service", "com.sun.jersey.spi.container.servlet.ServletContainer"); - experimentServlet.addInitParameter("com.sun.jersey.config.property.packages", "org.apache.airavata.services.experiment;org.codehaus.jackson.jaxrs"); - experimentServlet.setLoadOnStartup(1); - - Wrapper configurationServlet = tomcat.addServlet("/airavata", "Airavata Server Configuration Service", "com.sun.jersey.spi.container.servlet.ServletContainer"); - configurationServlet.addInitParameter("com.sun.jersey.config.property.packages", "org.apache.airavata.services.server;org.codehaus.jackson.jaxrs"); - configurationServlet.setLoadOnStartup(1); - - Wrapper registryServlet = tomcat.addServlet("/airavata", "Airavata Registry Service", "com.sun.jersey.spi.container.servlet.ServletContainer"); - registryServlet.addInitParameter("com.sun.jersey.config.property.packages", "org.apache.airavata.services.registry.rest;org.codehaus.jackson.jaxrs"); - registryServlet.setLoadOnStartup(1); - - FilterDef corsFilter = new FilterDef(); - corsFilter.setFilterName("CORS Filter"); - corsFilter.setFilterClass("org.ebaysf.web.cors.CORSFilter"); - corsFilter.addInitParameter("cors.allowed.origins","*"); - corsFilter.addInitParameter("cors.allowed.methods","GET,POST,HEAD,PUT,OPTIONS"); - corsFilter.addInitParameter("cors.allowed.headers","Origin,Accept,X-Requested-With,Content-Type,Access-Control-Request-Method,Access-Control-Request-Headers,Authorization"); - corsFilter.addInitParameter("cors.exposed.headers",""); - corsFilter.addInitParameter("cors.preflight.maxage","1800"); - corsFilter.addInitParameter("cors.support.credentials","true"); - corsFilter.addInitParameter("cors.logging.enabled","false"); - corsFilter.addInitParameter("cors.request.decorate","true"); - context.addFilterDef(corsFilter); - - FilterDef filter1definition = new FilterDef(); - filter1definition.setFilterName("AuthenticationFilter"); - filter1definition.setFilterClass("org.apache.airavata.services.registry.rest.security.HttpAuthenticatorFilter"); - filter1definition.addInitParameter("authenticatorConfigurations","authenticators.xml"); - context.addFilterDef(filter1definition); - - FilterMap corsFilterMapping = new FilterMap(); - corsFilterMapping.setFilterName("CORS Filter"); - corsFilterMapping.addURLPattern("/user-store/*"); - corsFilterMapping.addURLPattern("/services/registry/*"); - corsFilterMapping.addURLPattern("/services/server/*"); - corsFilterMapping.addURLPattern("/services/experiment/*"); - context.addFilterMap(corsFilterMapping); - - FilterMap filter1mapping = new FilterMap(); - filter1mapping.setFilterName("AuthenticationFilter"); - filter1mapping.addURLPattern("/user-store/*"); - filter1mapping.addURLPattern("/services/registry/*"); - filter1mapping.addURLPattern("/services/server/*"); - filter1mapping.addURLPattern("/services/experiment/*"); - context.addFilterMap(filter1mapping); - registryServlet.addMapping("/services/registry/*"); - configurationServlet.addMapping("/services/server/*"); - experimentServlet.addMapping("/services/experiment/*"); - context.addApplicationListener("org.apache.airavata.rest.mappings.utils.RegistryListener"); - - tomcat.start(); - } - - /** - * This method Stops the Tomcat server. - */ - public void stopTomcat() throws Exception { - // Stop the embedded server - embedded.stop(); - } - - - public static void main(String args[]) { - try { - new Thread(){ - public void run(){ - ServerMain tomcat = new ServerMain(); - try { - tomcat.startTomcat(); - } catch (Exception e) { - e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. - } - } - }.start(); - while(true){ - Thread.sleep(10000); - } - } catch (Exception e) { - - e.printStackTrace(); - } - } + private static void startAllServers() { + for (IServer server : servers) { + try { + server.start(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/edd26be8/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index a2c3adb..a02cb37 100644 --- a/pom.xml +++ b/pom.xml @@ -452,7 +452,7 @@ modules/airavata-client modules/security modules/credential-store - modules/rest + modules/orchestrator tools samples