You know thats sounding good to me :) I don't have the time now but
i'll add some comments on Monday.

   ...ant

On Fri, Jan 29, 2010 at 9:43 PM, Raymond Feng <[email protected]> wrote:
> Hi,
>
> I would like summarize our story for Domain/Node so that we can be on the
> same page moving forward.
>
> A) The key players and steps:
>
> 1) The JVM is started
>
> 2) Tuscany runtime classes are loaded by the JVM into the one or more class
> spaces (within a class space, there is at most one class for a given class
> name):
> * One class space per JVM (such as Tomcat deep integration or standalone
> Tuscany launcher)
> * Multiple class spaces (such as Web applications that package the Tuscany
> jars)
>
> 3) Tuscany runtime is bootstrapped and NodeFactory can be instantiated to
> encapsulate the ExtensionPointRegistry which manages all the extension
> points and extensions in Tuscany.
> * In most cases, NodeFactory.getInstance() returns the shared NodeFactory
> * You can also call NodeFactory.newInstance() to creates a new instance
>
> 4) TBD: The NodeFactory can be configured with a mapping between domainURIs
> and registryURIs so that NodeFactory knows the registryURI for a given
> domain.
> * The initial mapping can be populated by the hosting environment (for
> example, from an property file)
> * A map can be added to NodeFactory to allow it to be configured
> programmatically.
>
> 5) The NodeFactory can eagerly lookup the DomainRegistryFactory and
> create/start EndpointRegistry without creating a Node.
> * OSGi remote services needs to start to receive remote endpoints before any
> node is created.
> * SCAClientFactory implementation may need to connect to a domain when it is
> created
>
> 6) An EndpointRegistry is created (or reused) by a DomainRegistryFactory.
> The domainURI and domainRegistryURI are both passed in so that the
> DomainRegistryFactory can multiplex multiple SCA domains over the same
> physical transport.
> * For example, both Tribes and Hazelcast allows us to get a map by name from
> the same multicast group. The map name can be used to represent an SCA
> domain.
> * Zookeeper can have different roots to represent different SCA domains in
> the same ZooKeeper server.
>
> 7) Nodes can be created from NodeFactory. If a Node doesn't configure with a
> domainRegistryURI (If we agree that 4 is a better approach, we can remove
> the need to configure domainRegistryURI at Node level), the EndpointRegistry
> will be looked up by the domain URI.  NodeFactory maintains a list of Nodes
> (potentially by domain)
>
> B) NodeFactory/Node as API or SPI
>
> At this point, we try to not add other Tuscany modules in the node-api
> module and use reflection APIs to discover and invoke NodeImpl. That creates
> some difficulty for the code that wants to use NodeFactory/Node as a SPI.
> The later case wants to access more information from NodeFactory/Node, for
> example, our client factory could get all the Nodes from the NodeFactory and
> list the contributions and composites (including the service endpoints).
>
> Do we want to introduce subinterfaces for NodeFactory/Node as SPIs or it's
> OK to add more dependencies into node-api? Some examples could be:
>
> NodeFactory.getExtensionPointRegistry();
> NodeFactory.getNodes();
> NodeFactory.getNodes(String domainURI);
> NodeFactory.getNode(String domainURI, String nodeURI);
> Node.getEndpointRegistry();
> Node.getDeploymentComposite();
>
> Thanks,
> Raymond
> ---
> Raymond Feng
> Apache Tuscany PMC Member: http://tuscany.apache.org
> Co-author of Tuscany In Action (A book on Tuscany SCA):
> http://tuscanyinaction.com/
> www.enjoyjava.com
> http://twitter.com/raymondfeng
>
>
>

Reply via email to