axis-c-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Susantha Kumara <susan...@opensource.lk>
Subject Re: serious problem with SOAPAction handling
Date Sat, 12 Jun 2004 07:17:04 GMT
On Wed, 2004-06-09 at 22:18, Aleksander Slominski wrote:
> Susantha Kumara wrote:
> 
> >Hi Alek,
> >
> >I think the use of SOAPAction header is defined by SOAP server. So the
> >wsdl you get from Axis C++ server should have the proper SOAPAction
> >entries. 
> >
> >Ex:
> ><operation name="sendDoubles">
> >  <SOAP:operation style="rpc" soapAction="Benchmark1#sendDoubles" /> 
> >  
> >
> WSDL file had soapAction=""
> 
> in this case shouldnt AXIS-C++ do dispatch based on URL and/or namesapce 
> first SOAP:Body element?
> 
Yes the Axis Client should. I think it does.

But If you build a web service to be deployed with Axis C++ you need to
modify the wsdl so that every operation has soapAction to have
"servicename#methodname"

---
Susantha.

> alek
> 
> >  <input>
> >  <SOAP:body use="encoded" namespace="urn:Benchmark1"
> >encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> 
> >  </input>
> >  <output>
> >  <SOAP:body use="encoded" namespace="urn:Benchmark1"
> >encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> 
> >  </output>
> >  </operation>
> >
> >
> >  
> >
> >>-----Original Message-----
> >>From: Aleksander Slominski [mailto:aslom@cs.indiana.edu]
> >>Sent: Tuesday, June 08, 2004 12:23 PM
> >>To: Apache AXIS C Developers List
> >>Subject: serious problem with SOAPAction handling
> >>
> >>it seesm that AXIS-C++ can not do dispatch of messages if SOAPAction
> >>    
> >>
> >is
> >  
> >
> >>empty even though wsdl2ws is fine to compile such WSDL
> >>
> >>    
> >>
> ><http://www.extreme.indiana.edu/%7Easlom/bnp/wsperf/wsdl/benchmark1all.w
> >sd
> >  
> >
> >>l>?!
> >>
> >>
> >>moreover it leads to some strange fault ...
> >>
> >><SOAP-ENV:Fault
> >>xmlns:SOAP-
> >>ENV="http://schemas.xmlsoap.org/soap/envelope/"><faultcode>SOAP-
> >>ENV:Client</faultcode><faultstring>Requested
> >>service is not registerd at the
> >>
> >>    
> >>
> >server</faultstring><faultactor>http://endpoint/url</faultactor><faultde
> >ta
> >  
> >
> >>il>Requested
> >>service not found</faultdetail></SOAP-ENV:Fault>
> >>    
> >>
> >
> >This fault is sent by Axis C++ server when it cannot find the SOAPAction
> >header.
> >
> >  
> >
> >>(and there si a parsing bug in for SOAPAction as for SOAPAction such
> >>    
> >>
> >as
> >  
> >
> >>"" it will try to find service with name double quotes ")
> >>    
> >>
> >
> >This may be a bug in CVS code after recent changes. Could you add a bug
> >on this to JIRA ?.
> >
> >  
> >
> >>HTTP/1.1 200 OK
> >>Date: Tue, 08 Jun 2004 06:04:09 GMT
> >>Server: Apache/1.3.31 (Unix)
> >>Content-Length: 591
> >>Content-Type: text/xml
> >>
> >><?xml version='1.0' encoding='utf-8' ?><SOAP-ENV:Envelope
> >>xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
> >>xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> >>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-
> >>ENV:Body><SOAP-ENV:Fault><faultcode
> >>xsi:type="xsd:string">SOAP-ENV:Client</faultcode><faultstring
> >>xsi:type="xsd:string">Soap method is not allowed to
> >>invoke</faultstring><faultactor
> >>xsi:type="xsd:string">http://endpoint/url</faultactor><faultdetail
> >>xsi:type="xsd:string">Requested method is not
> >>
> >>    
> >>
> >allowed</faultdetail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelop
> >e>
> >  
> >
> >>but what is even worse C++ client can not handle such response and
> >>coredumps in this misterious way:
> >>
> >>(gdb) where
> >>#0  0xffffe002 in ?? ()
> >>#1  0x42028c55 in abort () from /lib/tls/libc.so.6
> >>#2  0x40140c47 in __cxxabiv1::__terminate(void (*)()) (
> >>    handler=0x42028a80 <abort>)
> >>    at ../../../../dist/libstdc++-v3/libsupc++/eh_terminate.cc:47
> >>#3  0x40140c94 in std::terminate() ()
> >>    at ../../../../dist/libstdc++-v3/libsupc++/eh_terminate.cc:57
> >>#4  0x40140e16 in __cxa_throw (obj=0x8056010, tinfo=0x0, dest=0)
> >>    at ../../../../dist/libstdc++-v3/libsupc++/eh_throw.cc:77
> >>#5  0x40078b35 in SoapDeSerializer::checkMessageBody(char const*, char
> >>const*)
> >>    (this=0x80502b8, pName=0x804a8fd "Strings",
> >>    pNamespace=0x804a8c0 "oVoidResponse") at SoapDeSerializer.cpp:297
> >>#6  0x40061a40 in Call::checkMessage(char const*, char const*) (
> >>    this=0x804bb08, pName=0x804a8fd "Strings",
> >>    pNamespace=0x804a8c0 "oVoidResponse") at Call.cpp:514
> >>#7  0x08048ee5 in sprintf ()
> >>#8  0x08048a6b in sprintf ()
> >>#9  0x42015704 in __libc_start_main () from /lib/tls/libc.so.6
> >>
> >>so you can see that checkMessage called in stub Benchmark1PortType.cpp
> >>gets really confused (pNamespace is completely wrong!) ...
> >>
> >>to reproduce download and compile client and server from:
> >>
> >>    
> >>
> >http://www.extreme.indiana.edu/~aslom/bnp/wsperf/axis_cpp/samples_client
> >/s
> >  
> >
> >>oapbench/
> >>
> >>    
> >>
> >http://www.extreme.indiana.edu/~aslom/bnp/wsperf/axis_cpp/samples_server
> >/s
> >  
> >
> >>oapbench/
> >>
> >>after manually adding SOAPAction everything works OK
> >>alek
> >>
> >>--
> >>The best way to predict the future is to invent it - Alan Kay
> >>    
> >>
> >
> >---
> >Susantha.
> >
> >  
> >
> 


Mime
View raw message