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
- The OSOA reference binding list was used to represent resolved/configured bindings which meant breaking the model to resolve references
- 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
- New policy model can use endpoint models as policy subjects
- Support late reference resolution
Scenarios
- Static domain - where all composites are present before nodes are started
- as now composites will automatically be configured with unwired bindings
- 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
- 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
- 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 |
From the service |
Binding |
If target then from service |
Binding on service |
Intents |
Sum of intents on references at all levels |
Sum of intents on services at all levels |
Policy Sets |
Use attached policy sets |
Use attached policy sets |
Results expected in itest/builder
Scenario |
CAS1 |
CBS2 |
CCS2 |
CDS3 |
Endpoints at CD |
---|---|---|---|---|---|
1 Binding |
binding.ws |
|
|
|
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 |
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 |
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
Creation and Activation
Event |
Action |
---|---|
Create/Start Node |
Read Model |
Message through reference |
(if not resolved) EndpointReference resolution |
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:
|
Activate Runtime |
Create the runtime infrastructure. Includes:
|
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 |