It seems like generated client stubs (generated by
WSDL2Java tool) do not set SOAPAction header. The
header is retreived in AxisServlet.java(137)

HTTPTransportUtils.processHTTPPostRequest(msgContext,
req.getInputStream(), out,
                    req.getContentType(),
req.getHeader(HTTPConstants.HEADER_SOAP_ACTION),
                    req.getRequestURL().toString());

This leads to empty soapAction field in MessageContext
instance. 

When SOAPActionBasedDispatcher tries to resolve
operation (SOAPActionBasedDispatcher.java (54) it gets
the appropriate InOutAxisOperation from
operationsAliasesMap object of AxisServce. This map
contains a key for empty string (I'm not sure why this
is done) and the value of this key is second operation
of three I have defined. Hence, whatever operation I
invoke on client side - the second operation get
called because of an empty SOAPAction header. 

Another thing I've noticed that when different
handlers are applied the first one is HTTP handler. It
finds appropriate AxisService but it cant find axis
operation. The next handler is SOAP handler and it
uses instance of AxisService found by HTTP handler -
this one gets an empty operation.


Paul.


messageContext.getSoapAction();

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

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

Reply via email to