axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Paul Gonchar <p_gonc...@yahoo.com>
Subject Re: [Axis2] SOAPAction header is empty
Date Thu, 01 Jun 2006 15:56:14 GMT
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 <mgainty@hotmail.com> 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" <p_gonchar@yahoo.com>
> 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:
> axis-user-unsubscribe@ws.apache.org
> > For additional commands, e-mail:
> axis-user-help@ws.apache.org
> >
> > 
> 
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail:
> axis-user-help@ws.apache.org
> 
> 


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

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Mime
View raw message