You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sa...@apache.org on 2013/01/16 21:31:16 UTC

svn commit: r1434368 - in /airavata/trunk/modules: commons/utils/ commons/utils/src/main/java/org/apache/airavata/common/utils/ distribution/airavata-server/ distribution/airavata-server/src/main/resources/conf/ integration-tests/ registry/airavata-jpa...

Author: samindaw
Date: Wed Jan 16 20:31:15 2013
New Revision: 1434368

URL: http://svn.apache.org/viewvc?rev=1434368&view=rev
Log:
read port from existing tomcat if present + create airavata server WAR + install artifacts to maven repo (https://issues.apache.org/jira/browse/AIRAVATA-726 + https://issues.apache.org/jira/browse/AIRAVATA-727)

Modified:
    airavata/trunk/modules/commons/utils/pom.xml
    airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
    airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ServiceUtils.java
    airavata/trunk/modules/distribution/airavata-server/pom.xml
    airavata/trunk/modules/distribution/airavata-server/src/main/resources/conf/airavata-server.properties
    airavata/trunk/modules/integration-tests/pom.xml
    airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java

Modified: airavata/trunk/modules/commons/utils/pom.xml
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/commons/utils/pom.xml?rev=1434368&r1=1434367&r2=1434368&view=diff
==============================================================================
--- airavata/trunk/modules/commons/utils/pom.xml (original)
+++ airavata/trunk/modules/commons/utils/pom.xml Wed Jan 16 20:31:15 2013
@@ -91,6 +91,11 @@
             <artifactId>derbytools</artifactId>
             <version>${derby.version}</version>
         </dependency>
+		<dependency>
+            <groupId>org.apache.tomcat.embed</groupId>
+            <artifactId>tomcat-embed-core</artifactId>
+            <version>7.0.22</version>
+        </dependency>
 
 		<!-- Testing -->
 		<dependency>

Modified: airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ServerSettings.java?rev=1434368&r1=1434367&r2=1434368&view=diff
==============================================================================
--- airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ServerSettings.java (original)
+++ airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ServerSettings.java Wed Jan 16 20:31:15 2013
@@ -21,8 +21,21 @@
 
 package org.apache.airavata.common.utils;
 
-import org.apache.airavata.common.exception.ApplicationSettingsException;
+import java.util.ArrayList;
+
+import javax.management.InstanceNotFoundException;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+import javax.management.ObjectName;
 
+import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.catalina.Server;
+import org.apache.catalina.Service;
+import org.apache.catalina.connector.Connector;
+import org.apache.coyote.ProtocolHandler;
+import org.apache.coyote.http11.Http11AprProtocol;
+import org.apache.coyote.http11.Http11NioProtocol;
+import org.apache.coyote.http11.Http11Protocol;
 
 public class ServerSettings extends ApplicationSettings{
     private static final String DEFAULT_GATEWAY_ID="gateway.id";
@@ -30,6 +43,8 @@ public class ServerSettings extends Appl
     private static final String SYSTEM_USER_PASSWORD="system.password";
     private static final String SYSTEM_USER_GATEWAY="system.gateway";
     private static final String TOMCAT_PORT = "port";
+    private static final String SERVER_CONTEXT_ROOT="server.context-root";
+    private static String tomcatPort=null;
     
 	public static String getDefaultGatewayId()throws ApplicationSettingsException{
     	return getSetting(DEFAULT_GATEWAY_ID);
@@ -47,7 +62,59 @@ public class ServerSettings extends Appl
     	return getSetting(SYSTEM_USER_GATEWAY);
     }
 
+    public static String getServerContextRoot(){
+    	return getSetting(SERVER_CONTEXT_ROOT,"axis2");
+    }
+    
     public static String getTomcatPort() throws ApplicationSettingsException {
-        return getSetting(TOMCAT_PORT);
+    	if (tomcatPort==null) {
+			try {
+				//First try to get the port from a tomcat if it is already running
+				ArrayList<MBeanServer> mBeanServers = MBeanServerFactory
+						.findMBeanServer(null);
+				if (mBeanServers.size() > 0) {
+					MBeanServer mBeanServer = mBeanServers.get(0);
+					Server server = null;
+					String[] domains = mBeanServer.getDomains();
+					for (String domain : domains) {
+						try {
+							server = (Server) mBeanServer.getAttribute(
+									new ObjectName(domain, "type", "Server"),
+									"managedResource");
+							break;
+						} catch (InstanceNotFoundException e) {
+							//ignore
+						}
+					}
+					if (server != null) {
+						Service[] findServices = server.findServices();
+						for (Service service : findServices) {
+							for (Connector connector : service.findConnectors()) {
+								ProtocolHandler protocolHandler = connector.getProtocolHandler();
+								if (protocolHandler instanceof Http11Protocol
+										|| protocolHandler instanceof Http11AprProtocol
+										|| protocolHandler instanceof Http11NioProtocol) {
+									Http11Protocol p = (Http11Protocol) protocolHandler;
+									if (p.getSslImplementationName() == null
+											|| p.getSslImplementationName()
+													.equals("")) {
+										tomcatPort = String.valueOf(connector
+												.getPort());
+									}
+								}
+							}
+						}
+					}
+				}
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+			//if unable to determine the server port from a running tomcat server, get it from 
+			//the server settings file
+			if (tomcatPort == null) {
+				tomcatPort = getSetting(TOMCAT_PORT);
+			}
+		}
+		return tomcatPort;
     }
 }

Modified: airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ServiceUtils.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ServiceUtils.java?rev=1434368&r1=1434367&r2=1434368&view=diff
==============================================================================
--- airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ServiceUtils.java (original)
+++ airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/ServiceUtils.java Wed Jan 16 20:31:15 2013
@@ -60,7 +60,7 @@ public class ServiceUtils {
         }
         
         try {
-            port = (String) ServerSettings.getSetting(PORT);
+            port = (String) ServerSettings.getTomcatPort();
         } catch (ApplicationSettingsException e) {
 			//we will ignore this exception since the properties file will not contain the values
 			//when it is ok to retrieve them from the axis2 context
@@ -71,14 +71,17 @@ public class ServiceUtils {
                     .getAxisConfiguration().getTransportsIn()
                     .get("http");
             if (transportInDescription != null
-                    && transportInDescription.getParameter("port") != null) {
+                    && transportInDescription.getParameter(PORT) != null) {
                 port = (String) transportInDescription
-                        .getParameter("port").getValue();
+                        .getParameter(PORT).getValue();
             }
         }
         localAddress = "http://" + localAddress + ":" + port;
         localAddress = localAddress + "/"
-                + context.getContextRoot() + "/"
+        		//We are not using axis2 config context to get the context root because it is invalid
+                //+ context.getContextRoot() + "/"
+        		//FIXME: the context root will be correct after updating the web.xml 
+                + ServerSettings.getServerContextRoot() + "/"
                 + context.getServicePath() + "/"
                 + serviceName;
         log.debug("Service Address Configured:" + localAddress);

Modified: airavata/trunk/modules/distribution/airavata-server/pom.xml
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/distribution/airavata-server/pom.xml?rev=1434368&r1=1434367&r2=1434368&view=diff
==============================================================================
--- airavata/trunk/modules/distribution/airavata-server/pom.xml (original)
+++ airavata/trunk/modules/distribution/airavata-server/pom.xml Wed Jan 16 20:31:15 2013
@@ -18,7 +18,7 @@
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
-    <artifactId>airavata-server-distribution</artifactId>
+    <artifactId>apache-airavata-server</artifactId>
     <name>Airavata server distribution</name>
     <packaging>pom</packaging>
     <url>http://airavata.apache.org/</url>
@@ -45,7 +45,7 @@
                                     <version>${axis2.version}</version>
                                     <type>war</type>
                                     <overWrite>true</overWrite>
-                                    <outputDirectory>target/axis2-${axis2.version}</outputDirectory>
+                                    <outputDirectory>${project.build.directory}/axis2-${axis2.version}</outputDirectory>
                                 </artifactItem>
                             </artifactItems>
                             <excludes>**/icu4j-2.6.1.jar</excludes>
@@ -97,6 +97,94 @@
                     </execution>
                 </executions>
             </plugin>
+			<plugin>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>generate-war</id>
+                        <phase>package</phase>
+                        <configuration>
+                            <target>
+								<echo message="Building Airavata Server WAR" />
+								<echo message="============================" />
+                                <unzip src="${airavata.bin.zip}" dest="${project.build.directory}/tests"/>
+								<copy todir="${airavata.webapp.dir}/META-INF">
+								                    <fileset dir="${project.build.directory}/axis2-${axis2.version}/META-INF"/>
+								                </copy>
+								<copy todir="${airavata.webapp.dir}/axis2-web">
+								                    <fileset dir="${project.build.directory}/axis2-${axis2.version}/axis2-web"/>
+								                </copy>
+								<copy todir="${airavata.webapp.dir}/WEB-INF">
+								                    <fileset dir="${project.build.directory}/axis2-${axis2.version}/WEB-INF"/>
+								                </copy>
+								<copy todir="${airavata.webapp.dir}/WEB-INF">
+                                    <fileset dir="${airavata.work.dir}/repository/"/>
+                                </copy>
+                                <copy todir="${airavata.webapp.dir}/WEB-INF/lib">
+                                    <fileset dir="${airavata.work.dir}/lib/">
+                                            <exclude name="tomcat-*.jar"/>
+                                    </fileset>
+                                </copy>
+                                <copy todir="${airavata.webapp.dir}/WEB-INF/classes">
+                                    <fileset dir="${airavata.work.dir}/bin/">
+                                        <exclude name="axis2.xml"/>
+                                    </fileset>
+                                </copy>
+                                <copy todir="${airavata.webapp.dir}/WEB-INF/classes/database_scripts">
+                                    <fileset dir="${airavata.work.dir}/bin/database_scripts"/>
+                                </copy>
+								<copy todir="${airavata.webapp.dir}">
+                                    <fileset dir="src/main/resources">
+										<include name="LICENSE" />
+										<include name="NOTICE" />
+									</fileset>
+                                </copy>
+								<replace file="${airavata.webapp.dir}/WEB-INF/classes/airavata-server.properties">
+                                    <replacetoken>#server.context-root=axis2</replacetoken>
+                                    <replacevalue>server.context-root=${airavata.dist.name}</replacevalue>
+                                </replace>
+								<zip destfile="${airavata.webapp.war}" basedir="${airavata.webapp.dir}" />
+                                
+                            </target>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>build-helper-maven-plugin</artifactId>
+				<version>1.7</version>
+				<executions>
+				  <execution>
+				    <id>attach-artifacts</id>
+				    <phase>package</phase>
+				    <goals>
+				      <goal>attach-artifact</goal>
+				    </goals>
+				    <configuration>
+				      <artifacts>
+				        <artifact>
+				          <file>${airavata.webapp.war}</file>
+				          <type>war</type>
+				        </artifact>
+						<artifact>
+				          <file>${airavata.bin.zip}</file>
+				          <type>zip</type>
+						  <classifier>bin</classifier>
+				        </artifact>
+						<artifact>
+				          <file>${airavata.bin.tar.gz}</file>
+				          <type>tar.gz</type>
+						  <classifier>bin</classifier>
+				        </artifact>
+				      </artifacts>
+				    </configuration>
+				  </execution>
+				</executions>
+			  </plugin>
             <plugin>
                 <artifactId>maven-clean-plugin</artifactId>
                 <configuration>
@@ -504,5 +592,11 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <archieve.name>apache-airavata-server</archieve.name>
         <used.axis2.release>${axis2.version}</used.axis2.release>
+		<airavata.dist.name>apache-airavata-server-${project.version}</airavata.dist.name>
+        <airavata.work.dir>${project.build.directory}/tests/${airavata.dist.name}</airavata.work.dir>
+		<airavata.bin.zip>${project.build.directory}/${airavata.dist.name}-bin.zip</airavata.bin.zip>
+		<airavata.bin.tar.gz>${project.build.directory}/${airavata.dist.name}-bin.tar.gz</airavata.bin.tar.gz>
+		<airavata.webapp.dir>${project.build.directory}/airavata-axis2</airavata.webapp.dir>
+		<airavata.webapp.war>${project.build.directory}/${airavata.dist.name}.war</airavata.webapp.war>
     </properties>
 </project>

Modified: airavata/trunk/modules/distribution/airavata-server/src/main/resources/conf/airavata-server.properties
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/distribution/airavata-server/src/main/resources/conf/airavata-server.properties?rev=1434368&r1=1434367&r2=1434368&view=diff
==============================================================================
--- airavata/trunk/modules/distribution/airavata-server/src/main/resources/conf/airavata-server.properties (original)
+++ airavata/trunk/modules/distribution/airavata-server/src/main/resources/conf/airavata-server.properties Wed Jan 16 20:31:15 2013
@@ -125,6 +125,9 @@ msgBox.jdbc.url=jdbc:derby:wsmg;create=t
 # Advance configuration to change service implementations
 ###########################################################################
 
+#Update the server context root path if airavata server is deployed under a different context root other than axis2
+#server.context-root=axis2
+
 #
 # Class which implemented Scheduler interface. It will be used to determine a Provider
 #

Modified: airavata/trunk/modules/integration-tests/pom.xml
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/integration-tests/pom.xml?rev=1434368&r1=1434367&r2=1434368&view=diff
==============================================================================
--- airavata/trunk/modules/integration-tests/pom.xml (original)
+++ airavata/trunk/modules/integration-tests/pom.xml Wed Jan 16 20:31:15 2013
@@ -472,7 +472,7 @@
         <major.tomcat.version>7</major.tomcat.version>
         <cargo.debug.address>8000</cargo.debug.address>
         <cargo.debug.suspend>y</cargo.debug.suspend>
-        <test.running.port>8080</test.running.port>
+        <test.running.port>8088</test.running.port>
         <tomcat.work.dir>${project.build.directory}/tests/apache-tomcat-${tomcat.version}</tomcat.work.dir>
         <airavata.work.dir>${project.build.directory}/tests/apache-airavata-server-${project.version}</airavata.work.dir>
         <xbaya.work.dir>${project.build.directory}/tests/apache-airavata-xbaya-gui-${project.version}</xbaya.work.dir>

Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java?rev=1434368&r1=1434367&r2=1434368&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java Wed Jan 16 20:31:15 2013
@@ -112,7 +112,7 @@ public class AiravataJPARegistry extends
             userWorkflowRegistry = (UserWorkflowRegistry)getClassInstance(ConfigurationRegistry.class,RegistryConstants.USER_WF_REGISTRY_ACCESSOR_CLASS);
             publishedWorkflowRegistry = (PublishedWorkflowRegistry)getClassInstance(ConfigurationRegistry.class,RegistryConstants.PUBLISHED_WF_REGISTRY_ACCESSOR_CLASS);
         } catch (AiravataConfigurationException e) {
-            throw new RegistryException("Airavata Registry custom implementation class not defined in registry settings", e);
+            throw new RegistryException("An error occured when attempting to determine any custom implementations of the registries!!!", e);
         }
 	}
 
@@ -130,8 +130,6 @@ public class AiravataJPARegistry extends
 			// thus ignore error
 		} catch (RegistryAccessorInstantiateException e) {
 			logger.error("Error in instantiating instance from class for registry accessor "+registryAccessorKey,e);
-		} catch (AiravataConfigurationException e) {
-			throw e;
 		}
 		return null;
     }
@@ -1732,8 +1730,6 @@ public class AiravataJPARegistry extends
             WorkflowDataResource resource = jpa.getWorker().getWorkflowInstance(workflowInstanceId);
             WorkflowExecution workflowInstance = new WorkflowExecution(resource.getExperimentID(), resource.getWorkflowInstanceID());
             workflowInstance.setTemplateName(resource.getTemplateName());
-            ExperimentData experimentData = getExperiment(workflowInstanceId);
-//            WorkflowInstanceData workflowInstanceData = experimentData.getWorkflowInstance(workflowInstanceId);
             WorkflowExecutionData workflowInstanceData = new WorkflowExecutionDataImpl(null, workflowInstance, new WorkflowExecutionStatus(workflowInstance, resource.getStatus()==null? null:State.valueOf(resource.getStatus()),resource.getLastUpdatedTime()), null);
             List<NodeDataResource> nodeData = resource.getNodeData();
             for (NodeDataResource nodeDataResource : nodeData) {