On 7/16/07, Simon Laws <[EMAIL PROTECTED]> wrote:



On 7/16/07, ant elder <[EMAIL PROTECTED]> wrote:
>
> Thanks, that helps a lot, couple of followup questions:
>
> On 7/16/07, Simon Laws < [EMAIL PROTECTED] > wrote:
>
> <snip>
>
>  At the moment the application domain has a components list that is
> > populated when the domain is activated.
> >
>
> I can't find where this is happening, thats calling the setComponentNode
> method on DefaultComponentRegistry right? Is that being called right now?
>

The part I was talking about is in the following method in
DistributeSCADomain (and also in EmbeddedSCADomain)

        public void activateDomain() throws ActivationException {
            CompositeActivator compositeActivator =
runtime.getCompositeActivator();
            compositeActivator.activate(domainComposite);
            for (Component component : domainComposite.getComponents()) {
                components.put(component.getName(), component);
            }

So the domain has a list of all of it's components.

It would be relatively straighforward to make this list and/or the
> > application domain itself known to the management components that require
> > it.
> >
>
> How are you thinking this would be done? If the management components
> are just regular SCA components that would need some sort of new property
> annotation wouldn't it, or are you thinking of just some sort of static
> helper ComponentManager.getInstance() type of thing?
>

Excuse pseudo code but I was thinking something along the lines of  the
following code added to the activate processing.

ComponentReguistry componentRegistry = nodeDomain.getService(
ComponentRegistry.class, "ComponentRegistry");

...

for (Component component : domainComposite.getComponents()) {
        components.put(component.getName(), component);
        componentRegistry.addComponentModel(component.getName(),
component);
}

Not sure ComponentRegistry is the right management component for your
purposes but you get the idea.

I am concerned here that we rely on a component that had been declared in
the ".node" file. Someone could come along and just delete if from that
configuration file. What do we do then? Raise and error? Switch to non
distributed mode?

Anyhow there are a number of management components that we need to design,
for example, these are the kinds of things we want to do;

Set default URIs for Domain
Allocate domain components to node
Add/remove/update a contribution
Add/remove/update a composite
Start/Stop domain
Start/stop component
Query
Events


Some of this is starting to sound a little bigger than what TUSCANY-1379 is
about, i.e just start/stop/query running components. So i'd like to start
small with just that for now and see how it goes, and we can look at adding
the domain and node stuff as it progresses. To get things going I've just
committed a ComponentManager interface and updated EmbeddedSCADomain to use
that, its just rough start, anyone feel free to chip in with any comments as
I'm completely open to changing any aspect of it. I'll now try to add
something which actually uses it to start/stop things and we can go from
there...

   ...ant

Reply via email to