Tuscany Wiki > Home > Endpoints
Added by Simon Laws, last edited by Simon Laws on Aug 13, 2009  (view change)

This is a set of notes aimed at describing how we can update the Apache Tuscany Java SCA runtime to create an Endpoint structure to represent a configure reference or service binding.

Motivating mail thread http://www.mail-archive.com/dev@tuscany.apache.org/msg04531.html

Motivation

  1. The OSOA reference binding list was used to represent resolved/configured bindings which meant breaking the model to resolve references
  2. OASIS have a different approach to matching references/service so factoring out endpoint references/enpoints from references/services will allow a switchable algorithm to be deployed
  3. New policy model can use endpoint models as policy subjects
  4. Support late reference resolution

Scenarios

  1. Static domain - where all composites are present before nodes are started
    • as now composites will automatically be configured with unwired bindings
  2. Incremental deployment - where nodes are started with composites before the domain is complete
    • Endpoint logic will ask the domain for information required to resolve endpoint references with endpoints
  3. Service Location Transparency - a future scenario where nodes can be moved
    • Endpoint/binding logic can again be used to ask the domain for new endpoint information
    • Could just let each binding handle it but maybe some advantage to having the enpoint reference handle it by stopping/reconfiguring/starting the binding
  4. Dynamic Domain - in the future but some scenarios call for components to be reconfigured at runtime
    • Endpoint reference and endpoint concepts focus the effort of adding removing wires

Overview

Model

Callback

Promotion

Endpoint and EnpointReference creation algorithm

  EndpointReference Endpoint
Location Leaftmost component reference leaftmost component service
Multiplicity One for each binding on a leaf reference + promoted references One for each binding on a service
Interface From the reference
If none then from the implementation
From the service
If none then from the implementation
Binding If target then from service
Else from reference
Binding on service
If none then binding from promoted service
If none then binding.sca
Intents Sum of intents on references at all levels Sum of intents on services at all levels
Policy Sets Use attached policy sets
If none then use policy sets attached to impl reference
Use attached policy sets
If none then use policy sets attached to impl service

Results expected in itest/builder

Scenario CAS1 CBS2 CCS2 CDS3 Endpoints at CB Endpoints at CD
1 Binding binding.ws       Ignored in SCA v1.1? Ignored in SCA v1.1?
2 Binding   binding.ws     CD/S3/binding.sca  
3 Binding     binding.ws   CD/S3/binding.sca  
4 Binding       binding.ws CD/S3/binding.sca  

Detailed Model

The EndpointReference and Endpoint have a number of fields and a status which indicates what they are connected to and how they will be processed. Both structures are externalizable. In the Endpoint case this allows a distributed registry of endpoints to be maintained. In the EndpointReference case this allows ServiceReferences to be serialized between remote components as called for in the SCA specifications.

TBD

Old Material

Scenario CAR1 CBR2 CCR2 CDR3 EndpointReferences at CD
5 Binding binding.ws uri=       Ignored in SCA v1.1?
6 Binding   target=CFS3     CD/R3/target=CFS3
7 Binding     target=CFS3   CD/R3/target=CFS3
8 Binding       target=CES3 CD/R3/target=CES3
Scenario CAR1a CBR2a CCR2a CDR3a EndpointReferences at CD & CG
9 Binding       target=CES3 CD/R3a/target=CES3 CB/R3b/target=CES3
10 Binding   target=CFS3   target=CES3 CD/R3a/target=CES3 CD/R3a/target=CFS3 CB/R3b/target=CFS3
11 Binding   target=CFS3   target=CES3 TBD as 10
12 Binding   target=CFS3   target=CES3 TBD as 10
13 Binding       target=CES3 TBD as 9

Creation and Activation

Event Action
Create/Start Node Read Model
Resolve model
Build model
Activate Runtime
Start Runtime
Message through reference (if not resolved) EndpointReference resolution
Build Reference Chains
Service Not Available TBD - possible future event
Add Service TBD - Possible future event
Remove Service TBD - Possible future event
Action Description
Read Model read composite file into in-memory model
Resolve Model resolve composite against other artifacts in the composite and domain
Build model create the appropriate relationships between parts of the model bases on SCA validation rules, Inludes:
  • Endpoint creation
  • EndpointReference creation
Activate Runtime Create the runtime infrastructure. Includes:
  • EndpointReference resolution
  • EndpointReference wire creation
  • Endpoint wire creation
Start Runtime Start all runtime providers
EndpointReference resolution Locate the services that endpoint references refer to
Build Reference Chains use the wire configuration to build the runtime interceptor chains

EndpointReference States

State EndpointReference Endpoint
Wired - service specified but unresolved unresolved unresolved
Wired - service resolved - binding not matched resolved unresolved
Wired - service resolved - binding matched resolved resolved
Unwired resolved resolved