Well, the reason why I'm talking about SOAPAction header is that my app does not work. The problem is that server skeleton always tries to invoke the same operation no matter what method I call on client side. After debugging I found out that the reason for that is AxisService.operationsAliasesMap containing value for empty string key. And this value is OutInAxisOperation instance correspondingod the operation being invoked.
My understanding is that when SOAPAction is empty, AxisEngine must be getting operation name from SOAP envelop. Martin, I agree that "The attributes defined in the SOAP Header defines how a recipient should *process the SOAP message*". But you can take a look at AxisServlet.java(136) where SOAP action header is extracted, and then HTTPTransportUtils(166,167) where value of soapHeader is set into MessageContext. Finally, SOAPActionBasedDispatcher.java(51) (method findOperation) where this value is used to find an appropriate operation. So, you may see that Axis may use SOAPAction header to specify name of operation. I believe in my case operation must be found by SOAPMessageBodyBasedDispatcher dispatcher. But since SOAPActionBasedDispatcher finds operation by empty action first - this dispatcher does not take part. I'll try to investigate this issue further and I will let you know the results. For now, I found a workaround - I specify name of operation to invoke in request URL. This name gets processed by RequestURIBasedDispatcher Paul. AxisService.operationsAliasesMap contains key value for empty SOAPAction. Probaly, --- Martin Gainty <[EMAIL PROTECTED]> wrote: > Paul-- > > The W3C spec states- > The Header MUST CONTAIN actor,mustUnderstand and > encodingStyle > To paraphrase > The attributes defined in the SOAP Header defines > how a recipient should > *process the SOAP message* > > So my question is why are using those values to > populate the Header (which > is specific to the processing characteristics of the > SOAP message) > instead of placing the values in the Body- > (I guess I dont understand your point on why you > need to populate the > header)? > > Martin -- > > This email message and any files transmitted with it > contain confidential > information intended only for the person(s) to whom > this email message is > addressed. If you have received this email message > in error, please notify > the sender immediately by telephone or email and > destroy the original > message without making a copy. Thank you. > > ----- Original Message ----- > From: "Paul Gonchar" <[EMAIL PROTECTED]> > To: <axis-user@ws.apache.org> > Sent: Wednesday, May 31, 2006 7:26 PM > Subject: [Axis2] SOAPAction header is empty > > > > 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] > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: > [EMAIL PROTECTED] > For additional commands, e-mail: > [EMAIL PROTECTED] > > __________________________________________________ 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]