axis-c-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Aleksander Slominski <as...@cs.indiana.edu>
Subject Re: serious problem with SOAPAction handling
Date Wed, 09 Jun 2004 16:18:00 GMT
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?

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


-- 
The best way to predict the future is to invent it - Alan Kay


Mime
View raw message