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
