I've made enough local changes to get 7003, 7004 and 7005 working and
this is what I found.

The spec doesn't seem to mandate that the reference interface should
be marked with asyncInvocation even if the service is. Even when the
reference interface is marked in such a way the client could choose to
use the synchronous form of the operation. There is code in the
AsnchJDKInvocation handler to handle this case so I enabled it for
this situation by doing the following

- In JDKProxyFactory I enabled the AsyncJDKInvocationHandler in all situations.
- I called EPR.getInvocationChains before the
AsyncJDKInvocationHandler tests whether the service is async to ensure
that the endpoint in question is resolved
- I changed the binding.sca invoker to send the callback endpoint if
one is available to send
- I changed the ResponseDispatchImp to pick up MESSAGE_ID as well as
WS_MESSAGE_ID. The WS stuff seems to have bled into the general
runtime.

I'll attach the specific changes as a JIRA patch shortly when I've had
a look at why 7006 isn't working.

The is exploiting the general async pattern, that Mike implemented, in
the local default binding scenario. I expect this could be optimized
but it's useful that it's using a common pattern with the ws binding.
When binding.sca is running in remote mode with binding.ws underneath
it this should make getting asynch to work easier.


Simon
--
Apache Tuscany committer: tuscany.apache.org
Co-author of a book about Tuscany and SCA: tuscanyinaction.com

Reply via email to