You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sl...@apache.org on 2007/09/17 00:50:53 UTC

svn commit: r576202 - in /incubator/tuscany/branches/sca-java-1.0: itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/ modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/ modules/binding-s...

Author: slaws
Date: Sun Sep 16 15:50:51 2007
New Revision: 576202

URL: http://svn.apache.org/viewvc?rev=576202&view=rev
Log:
Change the default ports in domain.composite for the away from 8080
Change system.out to Log statements
Add interface for removing nodes from the domain service
Add a little bit of resilience so it is not so sensitive to which order you start nodes in

 

Modified:
    incubator/tuscany/branches/sca-java-1.0/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceRemoteTestCase.java
    incubator/tuscany/branches/sca-java-1.0/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCABindingInvoker.java
    incubator/tuscany/branches/sca-java-1.0/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAReferenceBindingProvider.java
    incubator/tuscany/branches/sca-java-1.0/modules/binding-sca-axis2/src/test/java/org/apache/tuscany/sca/binding/sca/axis2/TestServiceDiscoveryImpl.java
    incubator/tuscany/branches/sca-java-1.0/modules/domain-impl/src/main/java/org/apache/tuscany/sca/domain/impl/DomainManagerServiceImpl.java
    incubator/tuscany/branches/sca-java-1.0/modules/domain-impl/src/main/java/org/apache/tuscany/sca/domain/impl/SCADomainServiceImpl.java
    incubator/tuscany/branches/sca-java-1.0/modules/domain-impl/src/main/resources/domain.composite
    incubator/tuscany/branches/sca-java-1.0/modules/domain/src/main/java/org/apache/tuscany/sca/domain/SCADomainService.java
    incubator/tuscany/branches/sca-java-1.0/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/DomainManagerServiceImpl.java
    incubator/tuscany/branches/sca-java-1.0/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/SCADomainServiceImpl.java
    incubator/tuscany/branches/sca-java-1.0/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/impl/InMemoryTestCase.java
    incubator/tuscany/branches/sca-java-1.0/modules/node/src/main/resources/node.composite
    incubator/tuscany/branches/sca-java-1.0/samples/calculator-distributed/build.xml
    incubator/tuscany/branches/sca-java-1.0/samples/calculator-distributed/src/main/java/node/CalculatorNode.java
    incubator/tuscany/branches/sca-java-1.0/samples/calculator-distributed/src/test/java/calculator/DomainInMemoryTestCase.java

Modified: incubator/tuscany/branches/sca-java-1.0/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceRemoteTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceRemoteTestCase.java?rev=576202&r1=576201&r2=576202&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceRemoteTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/itest/callablereferences/src/test/java/org/apache/tuscany/sca/itest/callableref/CallableReferenceRemoteTestCase.java Sun Sep 16 15:50:51 2007
@@ -38,7 +38,7 @@
  */
 public class CallableReferenceRemoteTestCase {
     
-    private static String DEFAULT_DOMAIN_NAME = "http://localhost:8080";
+    private static String DEFAULT_DOMAIN_NAME = "http://localhost:8877";
 
     private static SCANodeImpl domain;
     private static SCANodeImpl nodeA;

Modified: incubator/tuscany/branches/sca-java-1.0/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCABindingInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCABindingInvoker.java?rev=576202&r1=576201&r2=576202&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCABindingInvoker.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCABindingInvoker.java Sun Sep 16 15:50:51 2007
@@ -18,12 +18,19 @@
  */
 package org.apache.tuscany.sca.binding.sca.axis2.impl;
 
+import java.lang.reflect.UndeclaredThrowableException;
+import java.net.ConnectException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.axis2.AxisFault;
 import org.apache.tuscany.sca.invocation.Interceptor;
 import org.apache.tuscany.sca.invocation.Invoker;
 import org.apache.tuscany.sca.invocation.Message;
 import org.apache.tuscany.sca.runtime.EndpointReference;
 import org.osoa.sca.ServiceUnavailableException;
 
+
 /**
  * A wrapper for the Axis2BindingInvoker that ensures that the url of the target
  * service is correct by looking it up in the service registry if it is not provided
@@ -31,7 +38,11 @@
  * @version $Rev: 563772 $ $Date: 2007-08-08 07:50:49 +0100 (Wed, 08 Aug 2007) $
  */
 public class Axis2SCABindingInvoker implements Interceptor {
-
+    
+    private final static Logger logger = Logger.getLogger(Axis2SCABindingInvoker.class.getName());    
+    
+    private int retryCount = 100;
+    private int retryInterval = 5000; //ms
     private Invoker axis2Invoker;
     private Axis2SCAReferenceBindingProvider provider;
 
@@ -90,6 +101,46 @@
         }
 
         // do the axis2 stuff
-        return axis2Invoker.invoke(msg);
+        Message returnMessage = null;
+        
+        for (int i =0; i < retryCount; i++){
+            
+            returnMessage = axis2Invoker.invoke(msg);
+            
+            if ( returnMessage.getBody().getClass() == AxisFault.class){
+                
+                AxisFault axisFault =  returnMessage.getBody();  
+                
+                if (axisFault.getCause().getClass() == ConnectException.class) {
+                    logger.log(Level.INFO, "Trying to send message to " + 
+                                           msg.getTo().getURI());
+                    
+                    // try and get the service endpoint again just in case
+                    // it's moved
+                    EndpointReference serviceEPR = provider.refreshServiceEndpoint();
+    
+                    if (serviceEPR == null) {
+                        throw new ServiceUnavailableException("Endpoint for service: " + provider.getSCABinding().getURI()
+                            + " can't be found for component: "
+                            + provider.getComponent().getName()
+                            + " reference: "
+                            + provider.getComponentReference().getName());
+                    }
+                    msg.setTo(serviceEPR);  
+                } else {
+                    break;
+                }
+          
+            } else {
+                break;
+            }
+            
+            try {
+                Thread.sleep(retryInterval);
+            } catch(InterruptedException ex) {
+            }
+         }            
+        
+        return returnMessage;
     }
 }

Modified: incubator/tuscany/branches/sca-java-1.0/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAReferenceBindingProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAReferenceBindingProvider.java?rev=576202&r1=576201&r2=576202&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAReferenceBindingProvider.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/binding-sca-axis2/src/main/java/org/apache/tuscany/sca/binding/sca/axis2/impl/Axis2SCAReferenceBindingProvider.java Sun Sep 16 15:50:51 2007
@@ -150,6 +150,16 @@
     }
     
     /**
+     * Go back to the distributed domain to go and get the service endpoint
+     * 
+     * @return An EPR for the target service that this reference refers to 
+     */
+    public EndpointReference refreshServiceEndpoint(){ 
+        serviceEPR= null;
+        return getServiceEndpoint();
+    }
+    
+    /**
      * Retrieves the uri of the callback service (that this reference has created)
      * returns null if there is no callback service for the sca binding
      * 

Modified: incubator/tuscany/branches/sca-java-1.0/modules/binding-sca-axis2/src/test/java/org/apache/tuscany/sca/binding/sca/axis2/TestServiceDiscoveryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/binding-sca-axis2/src/test/java/org/apache/tuscany/sca/binding/sca/axis2/TestServiceDiscoveryImpl.java?rev=576202&r1=576201&r2=576202&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/binding-sca-axis2/src/test/java/org/apache/tuscany/sca/binding/sca/axis2/TestServiceDiscoveryImpl.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/binding-sca-axis2/src/test/java/org/apache/tuscany/sca/binding/sca/axis2/TestServiceDiscoveryImpl.java Sun Sep 16 15:50:51 2007
@@ -111,7 +111,9 @@
         return "";
     }
     
-   
+    public String removeServiceEndpoint(String domainUri, String nodeUri, String serviceName, String bindingName){
+        return "";  
+    }
     /**
      * Locates information about a service endpoint 
      * 

Modified: incubator/tuscany/branches/sca-java-1.0/modules/domain-impl/src/main/java/org/apache/tuscany/sca/domain/impl/DomainManagerServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/domain-impl/src/main/java/org/apache/tuscany/sca/domain/impl/DomainManagerServiceImpl.java?rev=576202&r1=576201&r2=576202&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/domain-impl/src/main/java/org/apache/tuscany/sca/domain/impl/DomainManagerServiceImpl.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/domain-impl/src/main/java/org/apache/tuscany/sca/domain/impl/DomainManagerServiceImpl.java Sun Sep 16 15:50:51 2007
@@ -21,12 +21,12 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
-import org.apache.tuscany.sca.assembly.SCABinding;
 import org.apache.tuscany.sca.domain.DomainManagerService;
 import org.apache.tuscany.sca.domain.NodeInfo;
 import org.apache.tuscany.sca.domain.SCADomainService;
-import org.apache.tuscany.sca.domain.impl.SCADomainServiceImpl.ServiceEndpoint;
 import org.osoa.sca.annotations.Reference;
 import org.osoa.sca.annotations.Scope;
 
@@ -39,31 +39,38 @@
 @Scope("COMPOSITE")
 public class DomainManagerServiceImpl implements DomainManagerService{
     
+    private final static Logger logger = Logger.getLogger(DomainManagerServiceImpl.class.getName());
+    
     @Reference 
     public SCADomainService scaDomainService;
 
     List<NodeInfo> nodes = new ArrayList<NodeInfo>();
     
     public String registerNode(String domainUri, String nodeUri){ 
+        // try and remove it first just in case it's already registered
+        removeNode(domainUri, nodeUri);
+        
         NodeInfo nodeInfo = new NodeInfoImpl(domainUri, nodeUri);
         nodes.add(nodeInfo);
-        System.err.println("Registering node: " + nodeUri);
+        logger.log(Level.INFO, "Registered node: " + nodeUri);
         return nodeUri;
     }
     
     public String removeNode(String domainUri, String nodeUri){ 
         
-        NodeInfo nodeToRemove = null;
+        List<NodeInfo> nodesToRemove = new ArrayList<NodeInfo>();
         
         for(NodeInfo node : nodes){
             if ( node.match(domainUri, nodeUri)){
-                nodeToRemove = node;
-                break;
+                nodesToRemove.add(node);
             }
         }
 
-        nodes.remove(nodeToRemove);
-        System.err.println("Removed node: " + nodeUri);
+        for(NodeInfo nodeToRemove : nodesToRemove){
+            nodes.remove(nodeToRemove);
+            logger.log(Level.INFO, "Removed node: " + nodeUri);
+        }
+
         
         return nodeUri;
     }    
@@ -76,7 +83,6 @@
                                                               node.getNodeUri() + "NodeManagerService",
                                                               "");
                                                  
-
             if (url != null) {
                 node.setNodeManagerUrl(url);
             }

Modified: incubator/tuscany/branches/sca-java-1.0/modules/domain-impl/src/main/java/org/apache/tuscany/sca/domain/impl/SCADomainServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/domain-impl/src/main/java/org/apache/tuscany/sca/domain/impl/SCADomainServiceImpl.java?rev=576202&r1=576201&r2=576202&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/domain-impl/src/main/java/org/apache/tuscany/sca/domain/impl/SCADomainServiceImpl.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/domain-impl/src/main/java/org/apache/tuscany/sca/domain/impl/SCADomainServiceImpl.java Sun Sep 16 15:50:51 2007
@@ -21,6 +21,8 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import org.apache.tuscany.sca.domain.SCADomainService;
 import org.apache.tuscany.sca.domain.ServiceInfo;
@@ -35,6 +37,8 @@
 @Scope("COMPOSITE")
 public class SCADomainServiceImpl implements SCADomainService {
     
+    private final static Logger logger = Logger.getLogger(SCADomainServiceImpl.class.getName());    
+    
     List<ServiceEndpoint> serviceEndpoints = new ArrayList<ServiceEndpoint>();
     
     public class ServiceEndpoint {
@@ -108,12 +112,38 @@
             modifiedServiceName = serviceName;
         }
         
+        
         ServiceEndpoint serviceEndpoint = new ServiceEndpoint (domainUri, nodeUri, modifiedServiceName, bindingName, URL);
         serviceEndpoints.add(serviceEndpoint);
-        System.err.println("Registering service: " + serviceEndpoint.toString());
+        logger.log(Level.INFO, "Registered service: " + serviceEndpoint.toString());
         return "";
     }
     
+    /**
+     * Removes information about a service endpoint
+     * 
+     * @param domainUri the string uri for the distributed domain
+     * @param nodeUri the string uri for the current node
+     * @param serviceName the name of the service that is exposed and the provided endpoint
+     * @param bindingName the remote binding that is providing the endpoint
+     */    
+    public String  removeServiceEndpoint(String domainUri, String nodeUri, String serviceName, String bindingName){
+        
+        List<ServiceEndpoint> serviceEndpointsToRemove = new ArrayList<ServiceEndpoint>();
+        
+        for(ServiceEndpoint serviceEndpoint : serviceEndpoints){
+            if ( serviceEndpoint.match(domainUri, serviceName, bindingName)){
+                serviceEndpointsToRemove.add(serviceEndpoint);
+            }
+        }
+        
+        for(ServiceEndpoint serviceEndpointToRemove : serviceEndpointsToRemove){
+            serviceEndpoints.remove(serviceEndpointToRemove);
+            logger.log(Level.INFO, "Removed service: " +  serviceName );
+        }
+        
+        return "";
+    }
    
     /**
      * Locates information about a service endpoint 
@@ -124,11 +154,11 @@
      * @return url the endpoint url
      */
     public String findServiceEndpoint(String domainUri, String serviceName, String bindingName){
-        System.err.println("Finding service: [" + 
-                           domainUri + " " +
-                           serviceName + " " +
-                           bindingName +
-                           "]");
+        logger.log(Level.INFO, "Finding service: [" + 
+                               domainUri + " " +
+                               serviceName + " " +
+                               bindingName +
+                               "]");
         
         String url = "";
         
@@ -138,7 +168,7 @@
                 // if you want to temporarily modify the registered port 
                 // numbers for debugging uncomment this line
                 //url = replacePort(url, "8085", "8086");
-                System.err.println("Matching service url: " + url); 
+                logger.log(Level.INFO, "Found service url: " + url); 
             }
         }
         return url;

Modified: incubator/tuscany/branches/sca-java-1.0/modules/domain-impl/src/main/resources/domain.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/domain-impl/src/main/resources/domain.composite?rev=576202&r1=576201&r2=576202&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/domain-impl/src/main/resources/domain.composite (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/domain-impl/src/main/resources/domain.composite Sun Sep 16 15:50:51 2007
@@ -26,7 +26,7 @@
     <component name="domain">
        <tuscany:implementation.resource location="webroot"/>
         <service name="Resource">
-            <tuscany:binding.http/>
+            <tuscany:binding.http uri="http://localhost:8877/domain"/>
         </service>
     </component>            
                  
@@ -34,8 +34,8 @@
         <implementation.java class="org.apache.tuscany.sca.domain.impl.DomainManagerServiceImpl"/>
         <service name="DomainManagerService">
             <interface.java interface="org.apache.tuscany.sca.domain.DomainManagerService"/>
-            <binding.ws uri="http://localhost:8080/DomainManagerComponent/DomainManager"/>
-            <tuscany:binding.jsonrpc uri="http://localhost:8080/DomainManagerComponent/DomainManagerJson"/>
+            <binding.ws uri="http://localhost:8877/DomainManagerComponent/DomainManager"/>
+            <tuscany:binding.jsonrpc uri="http://localhost:8877/DomainManagerComponent/DomainManagerJson"/>
         </service>
         <reference name="scaDomainService" target="SCADomainComponent"/>
     </component>
@@ -44,9 +44,9 @@
         <implementation.java class="org.apache.tuscany.sca.domain.impl.SCADomainServiceImpl" />
         <service name="SCADomainService">
             <interface.java interface="org.apache.tuscany.sca.domain.SCADomainService"/>
-            <binding.sca uri="http://localhost:8080/SCADomainComponent/SCADomainServiceSCA"/>
-            <binding.ws uri="http://localhost:8080/SCADomainComponent/SCADomainService"/>     
-            <tuscany:binding.jsonrpc uri="http://localhost:8080/SCADomainComponent/SCADomainServiceJson"/> 
+            <binding.sca uri="http://localhost:8877/SCADomainComponent/SCADomainServiceSCA"/>
+            <binding.ws uri="http://localhost:8877/SCADomainComponent/SCADomainService"/>     
+            <tuscany:binding.jsonrpc uri="http://localhost:8877/SCADomainComponent/SCADomainServiceJson"/> 
         </service>
     </component>    
     

Modified: incubator/tuscany/branches/sca-java-1.0/modules/domain/src/main/java/org/apache/tuscany/sca/domain/SCADomainService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/domain/src/main/java/org/apache/tuscany/sca/domain/SCADomainService.java?rev=576202&r1=576201&r2=576202&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/domain/src/main/java/org/apache/tuscany/sca/domain/SCADomainService.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/domain/src/main/java/org/apache/tuscany/sca/domain/SCADomainService.java Sun Sep 16 15:50:51 2007
@@ -44,6 +44,18 @@
      */
     public String registerServiceEndpoint(String domainUri, String nodeUri, String serviceName, String bindingName, String URL);
     
+    
+    /**
+     * Removes information about a service endpoint
+     * 
+     * @param domainUri the string uri for the distributed domain
+     * @param nodeUri the string uri for the current node
+     * @param serviceName the name of the service that is exposed and the provided endpoint
+     * @param bindingName the remote binding that is providing the endpoint
+     */    
+    public String  removeServiceEndpoint(String domainUri, String nodeUri, String serviceName, String bindingName);
+     
+        
     /**
      * Locates information about a service endpoint 
      * 
@@ -54,6 +66,7 @@
      */
     public String findServiceEndpoint(String domainUri, String serviceName, String bindingName); 
     
+       
     
     /** 
      * Returns information for all registered services

Modified: incubator/tuscany/branches/sca-java-1.0/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/DomainManagerServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/DomainManagerServiceImpl.java?rev=576202&r1=576201&r2=576202&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/DomainManagerServiceImpl.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/DomainManagerServiceImpl.java Sun Sep 16 15:50:51 2007
@@ -19,10 +19,14 @@
 
 package org.apache.tuscany.sca.node.impl;
 
+import java.lang.reflect.UndeclaredThrowableException;
 import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import org.apache.tuscany.sca.domain.DomainManagerService;
 import org.apache.tuscany.sca.domain.NodeInfo;
+import org.osoa.sca.annotations.Property;
 import org.osoa.sca.annotations.Reference;
 import org.osoa.sca.annotations.Scope;
 
@@ -35,11 +39,40 @@
 @Scope("COMPOSITE")
 public class DomainManagerServiceImpl implements DomainManagerService{
     
+    private final static Logger logger = Logger.getLogger(DomainManagerServiceImpl.class.getName());    
+    
+    @Property
+    protected int retryCount = 100;
+    
+    @Property 
+    protected int retryInterval = 5000; //ms    
+    
     @Reference
     protected DomainManagerService domainManager;
 
     public String registerNode(String domainUri, String nodeUri) {
-        return domainManager.registerNode(domainUri, nodeUri);
+        
+        String returnValue = null;
+        
+        for (int i =0; i < retryCount; i++){
+            try {        
+                returnValue =  domainManager.registerNode(domainUri, nodeUri);
+                break;
+            } catch(UndeclaredThrowableException ex) {
+                logger.log(Level.INFO, "Trying to regsiter node " + 
+                                       nodeUri + 
+                                       " with domain " +
+                                       domainUri);
+          
+            }
+            
+            try {
+                Thread.sleep(retryInterval);
+            } catch(InterruptedException ex) {
+            }
+         }
+        
+        return returnValue;
     }
 
     public String removeNode(String domainUri, String nodeUri) {

Modified: incubator/tuscany/branches/sca-java-1.0/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/SCADomainServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/SCADomainServiceImpl.java?rev=576202&r1=576201&r2=576202&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/SCADomainServiceImpl.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/SCADomainServiceImpl.java Sun Sep 16 15:50:51 2007
@@ -19,8 +19,13 @@
 
 package org.apache.tuscany.sca.node.impl;
 
+import java.lang.reflect.UndeclaredThrowableException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
 import org.apache.tuscany.sca.domain.SCADomainService;
 import org.apache.tuscany.sca.domain.ServiceInfo;
+import org.osoa.sca.annotations.Property;
 import org.osoa.sca.annotations.Reference;
 
 
@@ -31,6 +36,15 @@
  */
 public class SCADomainServiceImpl implements SCADomainService{
     
+    private final static Logger logger = Logger.getLogger(SCADomainServiceImpl.class.getName());
+    
+    @Property
+    protected int retryCount = 100;
+    
+    @Property 
+    protected int retryInterval = 5000; //ms
+    
+    
     @Reference
     protected SCADomainService scaDomainService;
      
@@ -41,41 +55,67 @@
      * @param nodeUri the string uri for the current node
      * @param serviceName the name of the service that is exposed and the provided endpoint
      * @param bindingName the remote binding that is providing the endpoint
-     * @param url the enpoint url
-     * @return dummy valus just so that we don;t have a void return which doesn't work 
+     * @param url the endpoint url
+     * @return dummy values just so that we don't have a void return which doesn't work 
      */
     public String registerServiceEndpoint(String domainUri, String nodeUri, String serviceName, String bindingName, String URL){
-     /*
-        System.err.println("Registering service: [" + 
-                domainUri + " " +
-                nodeUri + " " +
-                serviceName + " " +
-                bindingName + " " +
-                URL +
-                "]");
-      */
-        
+     
         String dummy = null; 
         
-     //   try {
-            dummy =  scaDomainService.registerServiceEndpoint(domainUri, nodeUri, serviceName, bindingName, URL);
-     //   } catch(Exception ex) {
-            // When we get round to caching we could keep a list of registered endpoints
-            // and try again later either when this object is called or when the 
-            // domain comes back up again
-            /* not sure this should be an exception 
-            throw new IllegalStateException("Unable to  registering service: "  +
-                                            domainUri + " " +
-                                            nodeUri + " " +
-                                            serviceName + " " +
-                                            bindingName + " " +
-                                            URL, ex );
-            */
-     //   }
+        for (int i =0; i < retryCount; i++){
+            try {
+                dummy = scaDomainService.registerServiceEndpoint(domainUri, nodeUri, serviceName, bindingName, URL);
+                break;
+            } catch(UndeclaredThrowableException ex) {
+                logger.log(Level.INFO, "Trying to connect to domain " + 
+                                       domainUri + 
+                                       " to register service " +
+                                       serviceName);
+          
+            }
+            
+            try {
+                Thread.sleep(retryInterval);
+            } catch(InterruptedException ex) {
+            }
+         }
         
         return dummy;
     }
     
+    /**
+     * Removes information about a service endpoint 
+     * 
+     * @param domainUri the string uri for the distributed domain
+     * @param nodeUri the string uri for the current node
+     * @param serviceName the name of the service that is exposed and the provided endpoint
+     * @param bindingName the remote binding that is providing the endpoint
+     * @return dummy values just so that we don't have a void return which doesn't work 
+     */
+    public String removeServiceEndpoint(String domainUri, String nodeUri, String serviceName, String bindingName){
+     
+        String dummy = null; 
+        
+        for (int i =0; i < retryCount; i++){
+            try {
+                dummy = scaDomainService.removeServiceEndpoint(domainUri, nodeUri, serviceName, bindingName);
+                break;
+            } catch(UndeclaredThrowableException ex) {
+                logger.log(Level.INFO, "Trying to connect to domain " + 
+                                       domainUri + 
+                                       " to remove service " +
+                                       serviceName);
+          
+            }
+            
+            try {
+                Thread.sleep(retryInterval);
+            } catch(InterruptedException ex) {
+            }
+         }
+        
+        return dummy;
+    }    
    
     /**
      * Locates information about a service endpoint 
@@ -86,22 +126,27 @@
      * @return url the endpoint url
      */
     public String findServiceEndpoint(String domainUri, String serviceName, String bindingName){
-     /*        
-        System.err.println("Finding service: [" + 
-                domainUri + " " +
-                serviceName + " " +
-                bindingName +
-                "]");
-      */
+
         
         String url = null;
         
-        try {
-            url =  scaDomainService.findServiceEndpoint(domainUri, serviceName, bindingName);
-        } catch(Exception ex) {
-            // do nothing here. 
-            // If we can't find a service fo what ever reason then just return null
-        }
+        for (int i =0; i < retryCount; i++){
+            try {
+                url =  scaDomainService.findServiceEndpoint(domainUri, serviceName, bindingName);
+                break;
+            } catch(UndeclaredThrowableException ex) {
+                logger.log(Level.INFO, "Trying to connect to domain " + 
+                                       domainUri + 
+                                       " to find service " +
+                                       serviceName);
+          
+            }
+            
+            try {
+                Thread.sleep(retryInterval);
+            } catch(InterruptedException ex) {
+            }
+         }
         
         return url;
     }

Modified: incubator/tuscany/branches/sca-java-1.0/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/impl/InMemoryTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/impl/InMemoryTestCase.java?rev=576202&r1=576201&r2=576202&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/impl/InMemoryTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/node-impl/src/test/java/org/apache/tuscany/sca/node/impl/InMemoryTestCase.java Sun Sep 16 15:50:51 2007
@@ -36,7 +36,7 @@
  */
 public class InMemoryTestCase {
     
-    private static String DEFULT_DOMAIN_URI = "http://localhost:8080";
+    private static String DEFULT_DOMAIN_URI = "http://localhost:8877";
 
     private static SCANodeImpl registry;
     private static SCANodeImpl domainNodeA;

Modified: incubator/tuscany/branches/sca-java-1.0/modules/node/src/main/resources/node.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/modules/node/src/main/resources/node.composite?rev=576202&r1=576201&r2=576202&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/modules/node/src/main/resources/node.composite (original)
+++ incubator/tuscany/branches/sca-java-1.0/modules/node/src/main/resources/node.composite Sun Sep 16 15:50:51 2007
@@ -38,11 +38,11 @@
         </service>
         <service name="NodeManagerService">
             <interface.java interface="org.apache.tuscany.sca.node.NodeManagerService"/>
-            <tuscany:binding.jsonrpc uri="http://localhost:8080/NodeManagerComponent/NodeManagerJson"/>
+            <tuscany:binding.jsonrpc uri="http://localhost:8878/NodeManagerComponent/NodeManagerJson"/>
         </service>
         <service name="ComponentManagerService">
             <interface.java interface="org.apache.tuscany.sca.node.ComponentManagerService"/>
-            <tuscany:binding.jsonrpc uri="http://localhost:8080/NodeManagerComponent/ComponentManagerJson"/>
+            <tuscany:binding.jsonrpc uri="http://localhost:8878/NodeManagerComponent/ComponentManagerJson"/>
         </service>
     </component>           
     
@@ -50,21 +50,21 @@
         <implementation.java class="org.apache.tuscany.sca.node.impl.DomainManagerServiceImpl"/>
         <reference name="domainManager">
             <interface.java interface="org.apache.tuscany.sca.domain.DomainManagerService"/>
-            <binding.ws uri="http://localhost:8080/DomainManagerComponent/DomainManager"/>
+            <binding.ws uri="http://localhost:8878/DomainManagerComponent/DomainManager"/>
         </reference>
     </component>
     
     <component name="SCADomainComponent">
         <implementation.java class="org.apache.tuscany.sca.node.impl.SCADomainServiceImpl" />
         <reference name="scaDomainService">
-            <binding.ws uri="http://localhost:8080/SCADomainComponent/SCADomainService"/>
+            <binding.ws uri="http://localhost:8878/SCADomainComponent/SCADomainService"/>
         </reference>
     </component>
 
     <component name="node">
        <tuscany:implementation.resource location="webroot"/>
         <service name="Resource">
-            <tuscany:binding.http uri="http://localhost:8080/node"/>
+            <tuscany:binding.http uri="http://localhost:8878/node"/>
         </service>
     </component>    
     

Modified: incubator/tuscany/branches/sca-java-1.0/samples/calculator-distributed/build.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/samples/calculator-distributed/build.xml?rev=576202&r1=576201&r2=576202&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/samples/calculator-distributed/build.xml (original)
+++ incubator/tuscany/branches/sca-java-1.0/samples/calculator-distributed/build.xml Sun Sep 16 15:50:51 2007
@@ -66,7 +66,7 @@
             	<pathelement path="target/${test.jar}"/>
             	<pathelement location="../../lib/tuscany-sca-manifest.jar"/>
             </classpath>
-        	<arg value="mydomain"/>
+        	<arg value="http://localhost:8877/"/>
         	<arg value="nodeA"/>        	        	
         </java>
     </target>
@@ -80,7 +80,7 @@
             	<pathelement path="target/${test.jar}"/>
             	<pathelement location="../../lib/tuscany-sca-manifest.jar"/>
             </classpath>
-        	<arg value="mydomain"/>
+        	<arg value="http://localhost:8877/"/>
         	<arg value="nodeB"/>        	
         </java>
     </target>	
@@ -94,7 +94,7 @@
             	<pathelement path="target/${test.jar}"/>
             	<pathelement location="../../lib/tuscany-sca-manifest.jar"/>
             </classpath>
-        	<arg value="mydomain"/>
+        	<arg value="http://localhost:8877/"/>
         	<arg value="nodeC"/>        	
         </java>
     </target>	
@@ -310,18 +310,30 @@
             <classpath>
             	<path refid="repo.classpath"/>
             </classpath>
-        	<arg value="mydomain"/>
+        	<arg value="http://localhost:8877/"/>
         	<arg value="nodeA"/>        	        	
         </java>
     </target>
 	
+    <target name="runNodeARepoLoop">
+        <java classname="${node.class}"
+              fork="true">
+            <classpath>
+                <path refid="repo.classpath"/>
+            </classpath>
+            <arg value="http://localhost:8877/"/>
+            <arg value="nodeA"/>    
+        	<arg value="loop"/>
+        </java>
+    </target>	
+	
     <target name="runNodeBRepo">
         <java classname="${node.class}"
               fork="true">
             <classpath>
             	<path refid="repo.classpath"/>
             </classpath>
-        	<arg value="mydomain"/>
+        	<arg value="http://localhost:8877/"/>
         	<arg value="nodeB"/>        	
         </java>
     </target>	
@@ -332,7 +344,7 @@
             <classpath>
             	<path refid="repo.classpath"/>
             </classpath>
-        	<arg value="mydomain"/>
+        	<arg value="http://localhost:8877/"/>
         	<arg value="nodeC"/>        	
         </java>
     </target>	

Modified: incubator/tuscany/branches/sca-java-1.0/samples/calculator-distributed/src/main/java/node/CalculatorNode.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/samples/calculator-distributed/src/main/java/node/CalculatorNode.java?rev=576202&r1=576201&r2=576202&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/samples/calculator-distributed/src/main/java/node/CalculatorNode.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/samples/calculator-distributed/src/main/java/node/CalculatorNode.java Sun Sep 16 15:50:51 2007
@@ -38,15 +38,15 @@
     public static void main(String[] args) throws Exception {
         
         // Check that the correct arguments have been provided
-        if (null == args || args.length != 2) {
+        if (null == args || args.length < 2) {
              System.err.println("Useage: java CalculatorNode domainname nodename");   
              System.exit(1);
         }    
         
         try {
             String domainName = args[0];
-            String nodeName   = args[1];                       
-            
+            String nodeName   = args[1];
+             
             // Create the distributed domain representation. We use the network implementation 
             // here so that the node contacts a registry running somewhere out on the 
             // network. 
@@ -64,12 +64,23 @@
                 // do some application stuff
                 CalculatorService calculatorService = 
                     node.getService(CalculatorService.class, "CalculatorServiceComponent");
-        
+                
                 // Calculate
                 System.out.println("3 + 2=" + calculatorService.add(3, 2));
                 System.out.println("3 - 2=" + calculatorService.subtract(3, 2));
                 System.out.println("3 * 2=" + calculatorService.multiply(3, 2));
                 System.out.println("3 / 2=" + calculatorService.divide(3, 2));
+                
+                // a little hidden loop test to put some load on the nodes
+                if (args.length > 2){
+                    for (int i=0; i < 1000; i++){
+                        // Calculate
+                        System.out.println("3 + 2=" + calculatorService.add(3, 2));
+                        System.out.println("3 - 2=" + calculatorService.subtract(3, 2));
+                        System.out.println("3 * 2=" + calculatorService.multiply(3, 2));
+                        System.out.println("3 / 2=" + calculatorService.divide(3, 2));
+                    }
+                }
             } else {
                 // start up and wait for messages
                 try {

Modified: incubator/tuscany/branches/sca-java-1.0/samples/calculator-distributed/src/test/java/calculator/DomainInMemoryTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.0/samples/calculator-distributed/src/test/java/calculator/DomainInMemoryTestCase.java?rev=576202&r1=576201&r2=576202&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.0/samples/calculator-distributed/src/test/java/calculator/DomainInMemoryTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-1.0/samples/calculator-distributed/src/test/java/calculator/DomainInMemoryTestCase.java Sun Sep 16 15:50:51 2007
@@ -35,7 +35,7 @@
  */
 public class DomainInMemoryTestCase {
     
-    private static String DEFAULT_DOMAIN_URL = "http://localhost:8080";
+    private static String DEFAULT_DOMAIN_URL = "http://localhost:8877";
 
     private static SCANodeImpl domain;
     private static SCANodeImpl domainNodeA;



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org