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