You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

The characteristics of service references 

The basic requirements are as follows:

  1. CallableReference/ServiceReference is used to address a SCA component service over a given binding
  2. Some states can be associated with the CallableReference/ServiceReference, such as the conversationID and callbackID
  3. The CallableReference/ServiceReference can be passed around even accross binding protocols (subject to mashaling and unmashaling)
  4. Be able to create a (java) proxy for a business interface to invoke the service which is represented by the CallableReference/ServiceReference

In the current code, we use live java pointers to support local usage of CallableReference/ServiceReference and I would like to enhance them support
the remote case as well. The key is to capture enough metadata and remove the dependency on live model objects.

The structure of the object graph:

CallableReference/ServiceReference
    businessInterface: Class
    factory: WireObjectFactory
                    RuntimeWire
                        source: EndpointReference
                        component: RuntimeComponent
                        service: Contract
                        binding: Binding
                        callback: EndpointReference
                        target: EndpointReference
                            ...
                   invocationChains: InvocationChain
                        Invoker

  • business interface class name
  • component reference (componentURI, reference binding type, reference binding URI, callback binding type, callback binding URI)
  • conversation id
  • callback id

Resolve a CallableReference/ServiceReference to live model objects for local optimizations:

How is a CallableReference/ServiceReference can be used?

Associate a ServiceReference with a reference

The component that consumes the ServiceReference should declare a reference
(wiredByImpl=true). When a component receives the ServiceReference, it
should try to bind it to a declared reference.

  • No labels