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) {


Reply via email to