3) The JDKWireService will check the existence of the bindingServiceContract and use it for Service.inboundWire and Reference.outboundWire. If no bindingServiceContract, then we assume the bindingServiceContract is the same as the one from <interface.xxx>.

I thought it would use interface.xxx since the wire services generates proxies given to SCA clients (e.g. components). The binding service contract would be used by the target invoker to dispatch an invocation and hence would have to perform a mapping from the operation specified by interface.xxx.


You're right too. I think we're on the same page. Here the picture that matches what I described.

... --- (inbound)--> (interface.contract) Reference ---(outbound)-- > (binding.contract) TargetInvoker --- (inbound)--> (binding.contract) Service (interface.contract) --- (outbound)--> ...

Thinking about this more, we may have two ways to do this:

1. For services, we could have something like:

binding receiver (binding.contract) ---> inbound wire (interface.contract) --->outbound wire (interface.contract)

The inbound wire is used to generate a proxy so has to be interface.contract. The drawback here is the code that receives an invocation needs to do the operation mapping.

We could also have this:

binding receiver (binding.contract) ---> inbound wire (binding.contract) --->outbound wire (interface.contract)

We would need the connector to be able to map operations between different idls, which would be done through Operation.equals() as it connected the inbound and outbound wires. The one drawback here is what interface does a generated proxy take?


A service wired to a target with a different interface would be:

inbound wire (interface.contract) --->outbound wire (interface.contract) --> inbound wire (target.interface.contract) -- > target invoker (target.interface.contract)


2. For references

inbound wire (interface.contract) --->outbound wire (interface.contract) -->target invoker (binding.contract)

Which would mean the target invoker would have to perform the mapping (similar to a service receiver)

Or, the second option would look like:

inbound wire (interface.contract) --->outbound wire (binding.contract) -->target invoker (binding.contract)

The connector would be responsible for performing the mapping when it connects the wires.

What do you think?

Jim





---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to