I found the problem.
WSDL2Code did not put correct actionMapping into
services.xml for some reason. After I fixed it
everything went fine.

--- Paul Gonchar <[EMAIL PROTECTED]> wrote:

> 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]
> 
> 


__________________________________________________
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