Hi,

I think it's better to discuss the design in the context of a simple scenario so that we can see the whole picture. I'm giving a try to capture what I understand. Please forgive me if there's anything dumb and help me complete/fix it.

1) For the purpose of illustration, let's assume that we have a SCA domain (D1) with two active runtimes: R1 and R2. R1 is running on machine M1 and R2 on machine M2.

There is a logic composite (Composite0) representing the SCA domain D1.

2) An SCA application is developed and packaged as a jar file. The jar file contains a SCDL to represent a compoiste Composite1 with two components: Component1 and Component2. The SCDL file references a global element or type in a.xsd by QName for property definitions.

MyApp.jar:
   sample.Component1Impl
   sample.Component2Impl
   META-INF/sca/default.scdl
   xsd/a.xsd

The jar file is contributed to the SCA domain. Some services will be responsible for scanning/loading artifacts in the contribution. Is "ContributionProcessor" or "ContributionService" for this purpose?

Is artifact resolving going to happen during this phase?

3) A service (AssemblyService?) will add Composite1 to the logical composite representing the SCA domain.

Then the SCA domain will be:

Composite0:
      include Composite1:
           Component1
           Component2

4) We decide to deploy Composite1 distributedly: Compnent1 to runtime R1 and Component2 to runtime R2.

R1: Composite1.Component1
R2: Composite1.Component2

So a subset of Composite1 (physical model?) will be sent to R1 and the other to R2 using some sort of XML messages. Component1 is activated at R1 and Component2 is activated at R2. They are now running.

Thanks,
Raymond

----- Original Message ----- From: "Jeremy Boynes" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Monday, January 29, 2007 4:17 PM
Subject: Re: Federated Deployment (was SCDL Location in Composite Implementation)


On Jan 29, 2007, at 3:47 PM, Meeraj Kunnumpurath wrote:

Based on the third option, I think we need to come up with the following,

1. Classes that represent the physical model that represents the artifacts sent to target slave runtimes for deployment. 2. A component that is responsible on the master runtime responsible for assembling the physical model from a logical assembly and interacting with the discovery service to transport them to remote slave runtimes. 3. An inter-operable serialiation protocol that is used to represent the physical model on the wire. 4. A framework for handling the serialization/de-serialization between physical model objects and their wire-level representation. 5. A component that is responsible on the slave runtime to deploy the deserialized model objects.


Agreed.
For 3, I think we should use XML for that as there is no guarantee that the source and target runtimes will be implemented using the same technology. The content would be the XML types defined in by 1) and that must be extensible and versioned. Serialization between wire- format messages (XML) and in-memory mode should be selectable by each runtime implementation - the Java kernel uses custom loaders for this, I believe the C++/Native kernel uses SDO.

For 5), I think the component/message processor would be fairly lightweight - most of the work should be in the builders (with which builder to use selected by QName of the config object).

One key question is how much of this do we need to build from scratch and how much we can leverage on the existing assets. Can the physical model leverage on the existing model classes?

I used to think so but recently I've been thinking we should separate logical from physical. The logical model objects would represent SCDL concepts, the physical ones would be lower level targeted as input for the builders. For example, to build a Java component, the builder for it should be passed a definition for the implementation, injection sites, value factories, inbound and outbound wires with interceptor chains and binding definitions.

Time permitting, I'll try and post a snippet for this tonight.


Also can the current deployer/loader/builder framework be used for deserializing the physical model objects and applying the changeset on the target runtime?

Framework wise, yes I think so although from above I think we need more information in the handoff to the builder.
--
Jeremy


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to