OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

sca-assembly message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [sca-assembly] ISSUE 37: proposed approach for discussion andcomment


David Booz wrote:
> We touched on some of these points in the telecon today, but it would be 
> useful to expand in email.
> 
> My two questions are:
> 1) What does this solution look like for the composite reference 
> promoting multiple component references case? I think this is simple, 
> but extending the example would be helpful.
> 
Taking myapp1 from the previous example and extending it to add this,
we get:

<composite xmlns="http://www.osoa.org/xmlns/sca/1.0";
         targetNamespace="http://mynamespace";
         name="myapp1">

     <reference name="MyReference1" promote="MyReferenceComponent1,
                    MyReferenceComponent2" target="MyService1" />

     <component name="MyReferenceComponent1">
         <implementation.java class="myclient.MyClientImpl1" />
         <reference name="myService1">
             <interface.java interface="myserver.MyService1" />
         </reference>
     </component>

     <component name="MyReferenceComponent2">
         <implementation.java class="myclient.MyClientImpl2" />
         <reference name="myService2">
             <interface.java interface="myserver.MyService2" />
         </reference>
     </component>
</composite>

After deployment, this would be equivalent to the following:

<composite xmlns="http://www.osoa.org/xmlns/sca/1.0";
         targetNamespace="http://mynamespace";
         name="myapp1">

     <component name="MyReferenceComponent1">
         <implementation.java class="myclient.MyClientImpl1" />
         <reference name="myService1" target="MyServiceComponent/MyService/MyService1">
             <interface.java interface="myserver.MyService1" />
         </reference>
     </component>

     <component name="MyReferenceComponent2">
         <implementation.java class="myclient.MyClientImpl2" />
         <reference name="myService2" target="MyServiceComponent/MyService/MyService1">
             <interface.java interface="myserver.MyService2" />
         </reference>
     </component>
</composite>

> 2) How does this work for properties?
>
I would like to defer this until we have some consensus that this approach
is worth pursuing for services and references.

> 3) I presume the policy FW attributes (requires and policySet) would 
> also be merged following the rules for implementation hierarchy in the 
> policy spec?
> 
This sounds reasonable, though I'm not familiar with the policy rules
for implementation hierarchy.  Can you provide a pointer to the relevant
section of the policy spec?

> 4) Suppose myapp1 is deployed first, before myapp, what does the 
> component reference for MyReferenceComponent look like? How did you know 
> to add /MyService/ to the target URI?
> 
In this case, the target could not be resolved until myapp is deployed.
This would be similar to deploying a domain-level component A with a
reference to some other domain-level component service B/C, where
component B has not yet been deployed.

> I still don't prefer this model over simply ignoring the composite 
> services and references in deployment composites, but this is certainly 
> better than other alternative proposals I've seen. This magic merge 
> makes me nervous. Since it is possible to directly code the end result 
> of the merge, it would be simpler to show the pattern for domain level 
> components and then let the author (assembler/developer) decide what to do.
> 
Please see my earlier response to Anish for the use case that I believe
is enabled by this capability.

   Simon
> 
> Dave Booz
> STSM, BPM and SCA Architecture
> Co-Chair OASIS SCA-Policy TC and SCA-J TC
> "Distributed objects first, then world hunger"
> Poughkeepsie, NY (845)-435-6093 or 8-295-6093
> e-mail:booz@us.ibm.com
> 
> Inactive hide details for Simon Nash ---09/23/2008 10:30:04 AM---This is 
> not a formal proposal. It outlines a possible approacSimon Nash 
> ---09/23/2008 10:30:04 AM---This is not a formal proposal. It outlines a 
> possible approach that might be used for resolving thi
> 
> 
> From:	
> Simon Nash <oasis@cjnash.com>
> 
> To:	
> sca-assembly@lists.oasis-open.org
> 
> Date:	
> 09/23/2008 10:30 AM
> 
> Subject:	
> [sca-assembly] ISSUE 37: proposed approach for discussion and comment
> 
> ------------------------------------------------------------------------
> 
> 
> 
> This is not a formal proposal.  It outlines a possible approach that
> might be used for resolving this issue.  I'll illustrate this approach
> using the following example composites myapp and myapp1:
> 
> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0";
>         targetNamespace="http://mynamespace";
>         name="myapp">
> 
>     <service name="MyService1" promote="MyServiceComponent" />
> 
>     <service name="MyService2" promote="MyServiceComponent">
>         <binding.ws uri="http://localhost:8086/MyServiceComponent"; />
>     </service>
> 
>     <component name="MyServiceComponent">
>         <implementation.java class="myserver.MyServiceImpl" />
>         <service name="MyService">
>             <interface.java interface="myserver.MyService" />
>         </service>
>     </component>
> </composite>
> 
> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0";
>         targetNamespace="http://mynamespace";
>         name="myapp1">
> 
>     <reference name="MyReference1" promote="MyReferenceComponent" 
> target="MyService1" />
> 
>     <component name="MyReferenceComponent">
>         <implementation.java class="myclient.MyClientImpl" />
>         <reference name="myService">
>             <interface.java interface="myserver.MyService" />
>         </reference>
>     </component>
> </composite>
> 
> The question we need to address to resolve issue 37 is what does it mean to
> use these as deployment composites and deploy them into the domain by 
> inclusion.
> I would like to propose that the composite services and references within
> these deployment composites are used to create additional bindings on the
> underlying promoted component services and references.
> 
> This means that deploying myapp is equivalent to deploying the following:
> 
> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0";
>         targetNamespace="http://mynamespace";
>         name="myapp">
> 
>     <component name="MyServiceComponent">
>         <implementation.java class="myserver.MyServiceImpl" />
>         <service name="MyService">
>             <interface.java interface="myserver.MyService" />
>             <binding.sca name="MyService" />
>             <binding.sca name="MyService1" />
>             <binding.ws name="MyService2" 
> uri="http://localhost:8086/MyServiceComponent"; />
>         </service>
>     </component>
> </composite>
> 
> Similarly, deploying myapp1 is equivalent to deploying the following:
> 
> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0";
>         targetNamespace="http://mynamespace";
>         name="myapp1">
> 
>     <component name="MyReferenceComponent">
>         <implementation.java class="myclient.MyClientImpl" />
>         <reference name="myService" 
> target="MyServiceComponent/MyService/MyService1" >
>             <interface.java interface="myserver.MyService" />
>         </reference>
>     </component>
> </composite>
> 
> I believe this approach works in a fairly straightforward manner when
> promoted services or reference override bindings without overriding 
> interfaces.
> However, consider the case of myapp2, defined as follows:
> 
> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0";
>         targetNamespace="http://mynamespace";
>         name="myapp2">
> 
>     <service name="MyService1" promote="MyServiceComponent" />
> 
>     <service name="MyService2" promote="MyServiceComponent">
>         <binding.ws uri="http://localhost:8086/MyServiceComponent"; />
>         <interface.wsdl 
> interface="http://example.org/#wsdl.interface(MyWsdlService)" />
>     </service>
> 
>     <component name="MyServiceComponent">
>         <implementation.java class="myserver.MyServiceImpl" />
>         <service name="MyService">
>             <interface.java interface="myserver.MyService" />
>         </service>
>     </component>
> </composite>
> 
> Because MyService2 defines a different interface from MyService, we would
> need to preserve both of these interfaces in the deployed component
> MyServiceComponent.  This would require adding the ability to attach an
> interface to a binding as well as to a service or reference.  In SCDL,
> this would look like the following.
> 
> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0";
>         targetNamespace="http://mynamespace";
>         name="myapp">
> 
>     <component name="MyServiceComponent">
>         <implementation.java class="myserver.MyServiceImpl" />
>         <service name="MyService">
>             <interface.java interface="myserver.MyService" />
>             <binding.sca name="MyService" />
>             <binding.sca name="MyService1" />
>             <binding.ws name="MyService2" 
> uri="http://localhost:8086/MyServiceComponent";>
>                 <interface.wsdl 
> interface="http://example.org/#wsdl.interface(MyWsdlService)" />
>             </binding.ws>
>         </service>
>     </component>
> </composite>
> 
> A binding interface would need to be compatible with the underlying
> service or reference interface, following the same rules as for
> interfaces on promoted services or references.  Specifically, a
> binding interface on a service must be a compatible subset of the
> service interface, and a binding interface on a reference must be
> a compatible superset of the reference interface.
> 
> Adding the ability to specify interfaces on bindings has other uses
> outside of the specific context of this issue.  For example, the
> same SCA service might be exposed as two Web services, one using a
> doc-lit-wrapped binding and one using a doc-lit-bare binding.
> The interfaces (portTypes) for these are not the same.  Allowing
> a binding to provide a customized interface that is compatible
> with the service or reference solves this problem.
> 
>   Simon
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe from this mail list, you must leave the OASIS TC that
> generates this mail.  Follow this link to all your TCs in OASIS at:
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php 
> 
> 
> 




[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]