You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by Simon Laws <si...@googlemail.com> on 2011/05/19 14:49:03 UTC

Re: svn commit: r1124705 - in /tuscany/sca-java-2.x/trunk/modules: core-spi/src/main/java/org/apache/tuscany/sca/runtime/ core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/ deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/ d

On Thu, May 19, 2011 at 1:21 PM,  <an...@apache.org> wrote:
> Author: antelder
> Date: Thu May 19 12:21:55 2011
> New Revision: 1124705
>
> URL: http://svn.apache.org/viewvc?rev=1124705&view=rev
> Log:
> Add a way to run commands on remote nodes and add Node API and Shell commands to start and stop composites on remote nodes. Initial code so a little prototypy but it does work so committing it now for review
>
> Added:
>    tuscany/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/ActiveNodes.java
>    tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/RemoteCommand.java
> Modified:
>    tuscany/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/DomainRegistry.java
>    tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/DomainRegistryImpl.java
>    tuscany/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/DeployerImpl.java
>    tuscany/sca-java-2.x/trunk/modules/domain-hazelcast/src/main/java/org/apache/tuscany/sca/registry/hazelcast/HazelcastDomainRegistry.java
>    tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/Node.java
>    tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java
>    tuscany/sca-java-2.x/trunk/modules/endpoint-tribes/src/main/java/org/apache/tuscany/sca/endpoint/tribes/ReplicatedDomainRegistry.java
>    tuscany/sca-java-2.x/trunk/modules/shell/src/main/java/org/apache/tuscany/sca/shell/Shell.java
>
> Added: tuscany/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/ActiveNodes.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/ActiveNodes.java?rev=1124705&view=auto
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/ActiveNodes.java (added)
> +++ tuscany/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/ActiveNodes.java Thu May 19 12:21:55 2011
> @@ -0,0 +1,32 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +
> +package org.apache.tuscany.sca.runtime;
> +
> +import java.util.ArrayList;
> +import java.util.List;
> +
> +public class ActiveNodes {
> +
> +    List<Object> activeNodes = new ArrayList<Object>();
> +
> +    public  List<Object> getActiveNodes() {
> +        return activeNodes;
> +    }
> +}
>
> Modified: tuscany/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/DomainRegistry.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/DomainRegistry.java?rev=1124705&r1=1124704&r2=1124705&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/DomainRegistry.java (original)
> +++ tuscany/sca-java-2.x/trunk/modules/core-spi/src/main/java/org/apache/tuscany/sca/runtime/DomainRegistry.java Thu May 19 12:21:55 2011
> @@ -22,6 +22,7 @@ package org.apache.tuscany.sca.runtime;
>  import java.util.Collection;
>  import java.util.List;
>  import java.util.Map;
> +import java.util.concurrent.Callable;
>
>  import org.apache.tuscany.sca.assembly.Composite;
>  import org.apache.tuscany.sca.assembly.Endpoint;
> @@ -96,4 +97,6 @@ public interface DomainRegistry {
>     List<String> getMembers();
>     String getLocalMember();
>     String getRunningMember(String contributionURI, String compositeURI);
> +
> +    String remoteCommand(String memberName, Callable<String> command);
>  }
>
> Modified: tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/DomainRegistryImpl.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/DomainRegistryImpl.java?rev=1124705&r1=1124704&r2=1124705&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/DomainRegistryImpl.java (original)
> +++ tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/DomainRegistryImpl.java Thu May 19 12:21:55 2011
> @@ -26,6 +26,7 @@ import java.util.Iterator;
>  import java.util.List;
>  import java.util.Map;
>  import java.util.Properties;
> +import java.util.concurrent.Callable;
>  import java.util.logging.Level;
>  import java.util.logging.Logger;
>
> @@ -243,4 +244,10 @@ public class DomainRegistryImpl extends
>     public String getRunningMember(String contributionURI, String compositeURI) {
>         return LOCAL_MEMBER_NAME;
>     }
> +
> +    @Override
> +    public String remoteCommand(String memberName, Callable<String> command) {
> +        // TODO or should it just ensure the member name is LocalOnly and the run the command locally?
> +        throw new IllegalStateException("not supportted for " + LOCAL_MEMBER_NAME);
> +    }
>  }
>
> Modified: tuscany/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/DeployerImpl.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/DeployerImpl.java?rev=1124705&r1=1124704&r2=1124705&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/DeployerImpl.java (original)
> +++ tuscany/sca-java-2.x/trunk/modules/deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/DeployerImpl.java Thu May 19 12:21:55 2011
> @@ -30,6 +30,7 @@ import java.util.HashSet;
>  import java.util.List;
>  import java.util.Map;
>  import java.util.Set;
> +import java.util.concurrent.Callable;
>  import java.util.logging.Logger;
>
>  import javax.xml.namespace.QName;
> @@ -894,5 +895,11 @@ public class DeployerImpl implements Dep
>             // TODO Auto-generated method stub
>             return null;
>         }
> +
> +        @Override
> +        public String remoteCommand(String memberName, Callable<String> command) {
> +            // TODO Auto-generated method stub
> +            return null;
> +        }
>     }
>  }
>
> Modified: tuscany/sca-java-2.x/trunk/modules/domain-hazelcast/src/main/java/org/apache/tuscany/sca/registry/hazelcast/HazelcastDomainRegistry.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/domain-hazelcast/src/main/java/org/apache/tuscany/sca/registry/hazelcast/HazelcastDomainRegistry.java?rev=1124705&r1=1124704&r2=1124705&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/domain-hazelcast/src/main/java/org/apache/tuscany/sca/registry/hazelcast/HazelcastDomainRegistry.java (original)
> +++ tuscany/sca-java-2.x/trunk/modules/domain-hazelcast/src/main/java/org/apache/tuscany/sca/registry/hazelcast/HazelcastDomainRegistry.java Thu May 19 12:21:55 2011
> @@ -30,7 +30,9 @@ import java.util.HashMap;
>  import java.util.List;
>  import java.util.Map;
>  import java.util.Properties;
> +import java.util.concurrent.Callable;
>  import java.util.concurrent.ConcurrentHashMap;
> +import java.util.concurrent.FutureTask;
>  import java.util.logging.Level;
>  import java.util.logging.Logger;
>
> @@ -72,6 +74,7 @@ import com.hazelcast.config.Config;
>  import com.hazelcast.config.NearCacheConfig;
>  import com.hazelcast.config.TcpIpConfig;
>  import com.hazelcast.config.XmlConfigBuilder;
> +import com.hazelcast.core.DistributedTask;
>  import com.hazelcast.core.EntryEvent;
>  import com.hazelcast.core.EntryListener;
>  import com.hazelcast.core.Hazelcast;
> @@ -679,4 +682,20 @@ public class HazelcastDomainRegistry ext
>         }
>         return null;
>     }
> +
> +    @Override
> +    public String remoteCommand(String memberName, Callable<String> command) {
> +        for (Member member : hazelcastInstance.getCluster().getMembers()) {
> +            if (member.getInetSocketAddress().toString().equals(memberName)) {
> +                FutureTask<String> task = new DistributedTask<String>(command, member);
> +                hazelcastInstance.getExecutorService().execute(task);
> +                try {
> +                    return task.get();
> +                } catch (Exception e) {
> +                    throw new ServiceRuntimeException(e);
> +                }
> +            }
> +        }
> +        throw new IllegalArgumentException("member not found: " + memberName);
> +    }
>  }
>
> Modified: tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/Node.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/Node.java?rev=1124705&r1=1124704&r2=1124705&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/Node.java (original)
> +++ tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/Node.java Thu May 19 12:21:55 2011
> @@ -243,6 +243,9 @@ public interface Node {
>     List<String> getMembers();
>     String getLocalMember();
>     String getRunningMember(String contributionURI, String compositeURI);
> +
> +    String remoteStart(String member, String contributionURI, String compositeURI);
> +    String remoteStop(String member, String contributionURI, String compositeURI);
>
>     // TODO: Add methods to get:
>     //   start and stop composites on remote members
>
> Modified: tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java?rev=1124705&r1=1124704&r2=1124705&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java (original)
> +++ tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/NodeImpl.java Thu May 19 12:21:55 2011
> @@ -46,10 +46,12 @@ import org.apache.tuscany.sca.contributi
>  import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
>  import org.apache.tuscany.sca.core.ExtensionPointRegistry;
>  import org.apache.tuscany.sca.core.FactoryExtensionPoint;
> +import org.apache.tuscany.sca.core.UtilityExtensionPoint;
>  import org.apache.tuscany.sca.deployment.Deployer;
>  import org.apache.tuscany.sca.monitor.Monitor;
>  import org.apache.tuscany.sca.monitor.ValidationException;
>  import org.apache.tuscany.sca.runtime.ActivationException;
> +import org.apache.tuscany.sca.runtime.ActiveNodes;
>  import org.apache.tuscany.sca.runtime.CompositeActivator;
>  import org.apache.tuscany.sca.runtime.ContributionListener;
>  import org.apache.tuscany.sca.runtime.DomainRegistry;
> @@ -82,7 +84,9 @@ public class NodeImpl implements Node {
>         this.domainRegistry = domainRegistry;
>         this.extensionPointRegistry = extensionPointRegistry;
>         this.tuscanyRuntime = tuscanyRuntime;
> -
> +
> +        extensionPointRegistry.getExtensionPoint(UtilityExtensionPoint.class).getUtility(ActiveNodes.class).getActiveNodes().add(this);
> +
>         domainRegistry.addContributionListener(new ContributionListener() {
>             public void contributionUpdated(String uri) {
>                 loadedContributions.remove(uri);
> @@ -384,6 +388,7 @@ public class NodeImpl implements Node {
>         }
>         startedComposites.clear();
>         stoppedComposites.clear();
> +        extensionPointRegistry.getExtensionPoint(UtilityExtensionPoint.class).getUtility(ActiveNodes.class).getActiveNodes().remove(this);
>         if (tuscanyRuntime != null) {
>             tuscanyRuntime.stop();
>         }
> @@ -404,4 +409,14 @@ public class NodeImpl implements Node {
>         return domainRegistry.getRunningMember(contributionURI, compositeURI);
>     }
>
> +    @Override
> +    public String remoteStart(String memberName, String contributionURI, String compositeURI) {
> +        return domainRegistry.remoteCommand(memberName, new RemoteCommand(domainName, "start", contributionURI, compositeURI));
> +    }
> +
> +    @Override
> +    public String remoteStop(String memberName, String contributionURI, String compositeURI) {
> +        return domainRegistry.remoteCommand(memberName, new RemoteCommand(domainName, "stop", contributionURI, compositeURI));
> +    }
> +
>  }
>
> Added: tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/RemoteCommand.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/RemoteCommand.java?rev=1124705&view=auto
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/RemoteCommand.java (added)
> +++ tuscany/sca-java-2.x/trunk/modules/domain-node/src/main/java/org/apache/tuscany/sca/impl/RemoteCommand.java Thu May 19 12:21:55 2011
> @@ -0,0 +1,83 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +
> +package org.apache.tuscany.sca.impl;
> +
> +import java.io.Serializable;
> +import java.util.concurrent.Callable;
> +
> +import org.apache.tuscany.sca.Node;
> +import org.apache.tuscany.sca.core.ExtensionPointRegistry;
> +import org.apache.tuscany.sca.core.ExtensionPointRegistryLocator;
> +import org.apache.tuscany.sca.core.UtilityExtensionPoint;
> +import org.apache.tuscany.sca.runtime.ActiveNodes;
> +
> +public class RemoteCommand implements Callable<String>, Serializable {
> +    private static final long serialVersionUID = 1L;
> +
> +    // all fields MUST be Serializable
> +    private String domainName;
> +    private String command;
> +    private String contributionURI;
> +    private String compositeURI;
> +
> +    public RemoteCommand(String domainName, String command, String contributionURI, String compositeURI) {
> +        this.domainName = domainName;
> +        this.command = command;
> +        this.contributionURI = contributionURI;
> +        this.compositeURI = compositeURI;
> +    }
> +
> +    public String call() throws Exception {
> +        String response;
> +        try {
> +            Node node = getNode();
> +
> +            if ("start".equals(command)) {
> +                node.startComposite(contributionURI, compositeURI);
> +                response = "Started.";
> +            } else if ("stop".equals(command)) {
> +                node.stopComposite(contributionURI, compositeURI);
> +                response = "Stopped.";
> +            } else {
> +                response = "Unknown command: " + command;
> +            }
> +        } catch (Exception e) {
> +               response = "REMOTE EXCEPTION: " + e.getClass() + ":" + e.getMessage();
> +        }
> +        return response;
> +    }
> +
> +    private Node getNode() {
> +        // TODO Several places in Tuscany need to do this type of thing, for example, processing
> +        // async responses, so we need to design a "proper" way to do it
> +
> +        for (ExtensionPointRegistry xpr : ExtensionPointRegistryLocator.getExtensionPointRegistries()) {
> +            ActiveNodes activeNodes = xpr.getExtensionPoint(UtilityExtensionPoint.class).getUtility(ActiveNodes.class);
> +            for (Object o : activeNodes.getActiveNodes()) {
> +                Node node = (Node)o;
> +                if (node.getDomainName().equals(domainName)) {
> +                    return node;
> +                }
> +            }
> +        }
> +        throw new IllegalStateException("No remote Node found for domain: " + domainName);
> +    }
> +
> +}
>
> Modified: tuscany/sca-java-2.x/trunk/modules/endpoint-tribes/src/main/java/org/apache/tuscany/sca/endpoint/tribes/ReplicatedDomainRegistry.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/endpoint-tribes/src/main/java/org/apache/tuscany/sca/endpoint/tribes/ReplicatedDomainRegistry.java?rev=1124705&r1=1124704&r2=1124705&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/endpoint-tribes/src/main/java/org/apache/tuscany/sca/endpoint/tribes/ReplicatedDomainRegistry.java (original)
> +++ tuscany/sca-java-2.x/trunk/modules/endpoint-tribes/src/main/java/org/apache/tuscany/sca/endpoint/tribes/ReplicatedDomainRegistry.java Thu May 19 12:21:55 2011
> @@ -31,6 +31,7 @@ import java.util.HashMap;
>  import java.util.List;
>  import java.util.Map;
>  import java.util.StringTokenizer;
> +import java.util.concurrent.Callable;
>  import java.util.logging.Level;
>  import java.util.logging.Logger;
>
> @@ -493,4 +494,10 @@ public class ReplicatedDomainRegistry ex
>         return null;
>     }
>
> +    @Override
> +    public String remoteCommand(String memberName, Callable<String> command) {
> +        // TODO Auto-generated method stub
> +        return null;
> +    }
> +
>  }
>
> Modified: tuscany/sca-java-2.x/trunk/modules/shell/src/main/java/org/apache/tuscany/sca/shell/Shell.java
> URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/shell/src/main/java/org/apache/tuscany/sca/shell/Shell.java?rev=1124705&r1=1124704&r2=1124705&view=diff
> ==============================================================================
> --- tuscany/sca-java-2.x/trunk/modules/shell/src/main/java/org/apache/tuscany/sca/shell/Shell.java (original)
> +++ tuscany/sca-java-2.x/trunk/modules/shell/src/main/java/org/apache/tuscany/sca/shell/Shell.java Thu May 19 12:21:55 2011
> @@ -73,7 +73,7 @@ public class Shell {
>     private Map<String, Node> nodes = new HashMap<String, Node>();
>
>     public static final String[] COMMANDS = new String[] {"bye", "domain", "domains", "domainComposite", "help", "install", "installed", "invoke",
> -                                                          "load", "members", "remove", "run", "save", "services", "start", "started", "stop"};
> +                                                          "load", "members", "remoteStart", "remoteStop", "remove", "run", "save", "services", "start", "started", "stop"};
>
>     public static void main(final String[] args) throws Exception {
>         boolean useJline = true;
> @@ -444,6 +444,17 @@ public class Shell {
>         return true;
>     }
>
> +    boolean remoteStart(final List<String> toks) {
> +        String response = getNode().remoteStart(toks.get(1), toks.get(2), toks.get(3));
> +        out.println(response);
> +        return true;
> +    }
> +    boolean remoteStop(final List<String> toks) {
> +        String response = getNode().remoteStop(toks.get(1), toks.get(2), toks.get(3));
> +        out.println(response);
> +        return true;
> +    }
> +
>     boolean started(final List<String> toks) {
>         if (standaloneNodes.size() > 0) {
>             out.println("Standalone Nodes:");
> @@ -662,6 +673,18 @@ public class Shell {
>                     return bye();
>                 }
>             };
> +        if (op.equalsIgnoreCase("remoteStart"))
> +            return new Callable<Boolean>() {
> +                public Boolean call() throws Exception {
> +                    return remoteStart(toks);
> +                }
> +            };
> +        if (op.equalsIgnoreCase("remoteStop"))
> +            return new Callable<Boolean>() {
> +                public Boolean call() throws Exception {
> +                    return remoteStop(toks);
> +                    }
> +                };
>         if (op.equalsIgnoreCase("start"))
>             return new Callable<Boolean>() {
>                 public Boolean call() throws Exception {
>
>
>

Interesting, How are the members/nodes named/targeted? Haven't checked
this out yet so just asking.

Simon

-- 
Apache Tuscany committer: tuscany.apache.org
Co-author of a book about Tuscany and SCA: tuscanyinaction.com

Re: svn commit: r1124705 - in /tuscany/sca-java-2.x/trunk/modules: core-spi/src/main/java/org/apache/tuscany/sca/runtime/ core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/ deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/ d

Posted by Simon Laws <si...@googlemail.com>.
>
> I've mostly finished with the first cut of this set of changes i've been
> doing with getting distributed nodes working well so i'll post a summary of
> that to the ML shortly and we can review what things like the DomainRegistry
> interface has on it.
>
>    ...ant
>

Ok, great.

Simon

-- 
Apache Tuscany committer: tuscany.apache.org
Co-author of a book about Tuscany and SCA: tuscanyinaction.com

Re: svn commit: r1124705 - in /tuscany/sca-java-2.x/trunk/modules: core-spi/src/main/java/org/apache/tuscany/sca/runtime/ core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/ deployment/src/main/java/org/apache/tuscany/sca/deployment/impl/ d

Posted by ant elder <an...@gmail.com>.
On Thu, May 19, 2011 at 1:49 PM, Simon Laws <si...@googlemail.com>wrote:

> On Thu, May 19, 2011 at 1:21 PM,  <an...@apache.org> wrote:
> > Author: antelder
> > Date: Thu May 19 12:21:55 2011
> > New Revision: 1124705
> >
> > URL: http://svn.apache.org/viewvc?rev=1124705&view=rev
> > Log:
> > Add a way to run commands on remote nodes and add Node API and Shell
> commands to start and stop composites on remote nodes. Initial code so a
> little prototypy but it does work so committing it now for review
> >
>

<snip>


>
> Interesting, How are the members/nodes named/targeted? Haven't checked
> this out yet so just asking.
>
>
Presently its just up to the DomainRegistry impl, and there is a getMembers
method on DomainRegistry to return the list of whats active. The Hazelcast
regsitry just uses InetSocketAddress.toString() which looks something like:
"/192.168.1.82:14820".

I've mostly finished with the first cut of this set of changes i've been
doing with getting distributed nodes working well so i'll post a summary of
that to the ML shortly and we can review what things like the DomainRegistry
interface has on it.

   ...ant