You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by Steve Loughran <st...@apache.org> on 2005/09/21 16:48:55 UTC

[Axis2] why is operation mandatory on Call.invoke?

Forgive my confusion here, there are so many WS-* specs, and so little 
consistency.

I was under the belief that with doc/lit SOAP, all you need are docs; 
SOAPAction can and should be null.

but if I try and use Call.invokeBlocking("", data) then I get told off.

What should I be putting there?

Re: [Axis2] why is operation mandatory on Call.invoke?

Posted by Glen Daniels <gl...@thoughtcraft.com>.
Hi Steve!

> Forgive my confusion here, there are so many WS-* specs, and so little 
> consistency.

Heh. :)  And so many usage patterns of the specs that are there, even...

> I was under the belief that with doc/lit SOAP, all you need are docs; 
> SOAPAction can and should be null.

Not necessarily.  SOAPAction is commonly used to dispatch on a per-operation 
or even per-message basis, and this isn't changed by RPC-ness or 
doc/lit-ness.  There might be operation-specific values regardless.

It's true that if you are JUST thinking about SOAP the protocol, as opposed 
to a service as declared in a WSDL, you could just drop some content into a 
message and send away without knowing anything else.  However, the common 
case today is in fact a service that is either described by WSDL or at least 
looks a lot like the WSDL model - even though it may be doc/lit, there are 
still "operations" which have semantics associated with them, which in 
addition to what they *do*, might include different per-operation policies, 
etc....  So Axis2 wants to know what operation you're using so that it can 
engage any operation-specific Modules, for instance.

That said, there are certainly use cases where you don't know/care what 
operation is in use, so I think you have a point.  However, operations are 
also where MEPs live - so you do somehow need to tell Axis2 that a response 
is expected for in/out MEPs......

> but if I try and use Call.invokeBlocking("", data) then I get told off.
>
> What should I be putting there?

We could make the operation arg optional, and also provide 
invokeBlocking(data), which would simply use whatever global settings are in 
effect for Modules, policy, etc.  I guess we'd default to the req/resp MEP?

Alternately, you could just create a new OperationDescription()....

--Glen


Re: [Axis2] why is operation mandatory on Call.invoke?

Posted by Steve Loughran <st...@apache.org>.
Actually much time with the debugger (including using evaluating 
breakpoint to sneak in an extra timeout on an operation) and I've 
tracked down my problem to
  -xmlbeans generating a message with the root element name being of the 
type of the XSD type (lookupSystemRequest0, but the dispatch (obviously) 
being based on the name of the SOAP message (lookupSystem).

I will have to think about this, but the problem is clearly in my code...

Re: [Axis2] why is operation mandatory on Call.invoke?

Posted by Paul Fremantle <pz...@gmail.com>.
Steve

I agree.

By the way are you talking about Axis 1.x or 2 or both?

Paul

On 9/21/05, Steve Loughran <st...@apache.org> wrote:
>
>
> Forgive my confusion here, there are so many WS-* specs, and so little
> consistency.
>
> I was under the belief that with doc/lit SOAP, all you need are docs;
> SOAPAction can and should be null.
>
> but if I try and use Call.invokeBlocking("", data) then I get told off.
>
> What should I be putting there?
>