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
Creation and Activation
- Create
- Endpoint reference and endpoint models are created at build time
- Activate
- Create the endpoint wires
- Create the endpoint reference wires (eventual target service may not be known)
- Start
- Start bindings
- Invoke
- Endpoint - create chains when first message arrives
- Endpoint reference
- If endpoint resolved go ahead and created chains
- If endpoint not resolved try and resolve it and then create chanings
- ServiceUnavailable at endpoint reference (Future)
- repeat the endpoint reference resolution step
- Resolve
- There is a separate phase that resolves endpoint references to endpoints in the domain this can be run at build time but may be required later also