Hi,

I have checked in the changes under [1].

* A DomainRegistryFactoryExtensionPoint is introduced to collect different implementations of DomainRegistryFactory * DomainRegistryFactory is that factory to create EndpointRegistry for a given registryURI/domainURI. It also has a getSupportedSchemes() to indicate what URI shemes it supports * An ExtensibleDomainRegistryFactory wraps the DomainRegistryFactoryExtensionPoint to make the scheme based delegation. It loops through all the DomainRegistryFactory objects to check if they can handle such registryURI/domainURI. * Two abstract base classes (BaseDomainRegistryFactory, BaseEndpointRegistry) are introduced to simplify the DomainRegistryFactory and EndpointRegistry implementations.

The next will rename EndpointRegistry to DomainRegistry and add other types such as Policy definitions to it.

[1] http://svn.apache.org/viewvc?rev=904367&view=rev

Thanks,
Raymond
--------------------------------------------------
From: "Raymond Feng" <[email protected]>
Sent: Wednesday, January 27, 2010 9:14 PM
To: <[email protected]>
Subject: Re: Changing the endpoint registry usage to be based on the discovered impl not the domain uri scheme

I'm starting to introduce the DomainRegistryFactoryExtensionPoint, stay tuned :-).

Thanks,
Raymond
--------------------------------------------------
From: "ant elder" <[email protected]>
Sent: Tuesday, January 26, 2010 6:39 AM
To: <[email protected]>
Subject: Re: Changing the endpoint registry usage to be based on the discovered impl not the domain uri scheme

The key technical requirement AIUI is to support multiple
domain/contribution/composite applications with plugable
implementations of all the runtime extensions to do that. But that
doesn't mean supporting multiple different extension implementations
concurrently in the same active runtime, and so far when we've tried
to do that we've never been very successful - eg the multiple
ServletHost or SCA bindings impls. The runtime is pretty lightweight
and has lazy loading of things all over the place so its probably not
much overhead to run several instances, and its also unlikely that
there would ever be very many different endpoint registry impls wanted
to be run concurrently so its not really going to be a lot of overhead
to use separate runtimes. I can see you're keen to do this though so
why don't you go ahead and implement the tweaks you talked about in
the first email in this thread.

What i do think would be good though is if we could just pick one
registry impl and make it work consistently for all the main use cases
we have instead of trying to maintain several different ones each with
separate capabilities and limitations and test and samples and ways of
being configured.

  ...ant

On Mon, Jan 25, 2010 at 4:54 PM, Raymond Feng <[email protected]> wrote:
Come on, Ant. I'm talking about a key technical requirement here:

1) Now we have the ability to run a shared Tuscany runtime in a JVM and it can be used to create multiple nodes, with each of them running a composite
application from one or more SCA domains.

2) The Tuscany runtime (NodeFactory and the ExtensionPointRegistry) doesn't
keep any application related states, including the
domain/contribution/composite. This is keen to be able to embed Tuscany in a managed container such as Web or OSGi so that one shared instance of Tuscany
runtime to work with multiple composite apps.

3) Requiring different Tuscany runtime instances for composite applications from different SCA domains will definitely increase the memory footprint and
the overhead to bootstrap more Tuscany runtime instances.

4) I'm not against the possibility to use different Tuscany runtime
instances at the application scope, for example, each web app can
potentially package Tuscany runtime in the WAR. But for the shared Tuscany
runtime case, I want the feasibility to use a singleton to deal with
multiple composite apps from one or more SCA domains that require different
protocols for the endpoint registry.

Thanks,
Raymond
--------------------------------------------------
From: "ant elder" <[email protected]>
Sent: Monday, January 25, 2010 1:49 AM
To: <[email protected]>
Subject: Re: Changing the endpoint registry usage to be based on the
discovered impl not the domain uri scheme

On Sun, Jan 24, 2010 at 5:55 PM, Raymond Feng <[email protected]> wrote:

[[SNIP]]

It sounds like we don't really need multiple registries concurrently
in the same runtime but whats really wanted is a way to have
separately configurable Tuscany runtime instances from the same set of
Tuscany jars. That would be really useful, it would simplify a a lot
of our code, it would fix other cases where this has been an issue
like the ServletHost problems mentioned above, and it would help with
some other things i've never been able to find easy ways to do with
the current configuration options. So -

NO! Why do we have to clone Tuscany runtime instances in the same JVM for the mere purpose of supporting multiple domains? Please remember that all the code in the extension point registry is stateless and independent of
the application state (domain/node/contribution/composite).


Thats a strawman argument Raymond so I'm not going to get drawn into it.

 ...ant


Reply via email to