Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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.