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
|
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 |
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 |