On 25/08/2011 18:03, Simon Laws wrote:
On Thu, Aug 25, 2011 at 2:49 PM, ant elder<[email protected]> wrote:
Looking to fix TUSCANY-3931 about the clients not working with the
wsdl in the domain registry for async services and i wonder what the
wsdl should really look like. For example with the service interface:
@AsyncInvocation
public interface Service1AsyncServer {
@AsyncFault( {BusinessFault1.class, BusinessFault2.class} )
public void operation1Async( String input, ResponseDispatch<String>
handler );
}
would we expect the generated wsdl that goes in the domain registry be
that or the equivalent synchronous version, so with an operation1
instead of operation1Async?
...ant
My immediate answer would be that it should look like the synchronous
version with the asyncInvocation intent attached.
When we are matching interfaces we are comparing the synchronous
version because that's what the statement of the service interface
looks like.
Bindings have to decide how to support async invocations. We current
support two models which allow native and non-native support. Our web
services binding doesn't support async natively so I would guess that
?wsdl to the async endpoint results in the synch WSDL (don't know if
it's appropriately decorated). If it did provide native support would
we expect it to represent the async flow explicitly. No sure but we
can look to see it Axis says anything about what it does in the async
case.
Simon
+1
WSDL simply has the AsyncInvocation intent added to it. How that gets interpreted by the binding is
the big thing. The idea is that the binding should really split the request and response handling.
But note that in principle, a non-aware binding could try to treat the operation as synchronous -
it would simply time out in most cases.
Yours, Mike.