axis-c-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mirabile, Ismael" <>
Subject RE: WebSphere Interop problems (Array types)
Date Fri, 30 Jan 2004 21:49:08 GMT
Hi Dan,
I've gone through the code and found out a couple of things that break the result. 
This is what I have done:
I've used the same InteropBase sample application and modified it a little bit to target a
Calculator service that I deployed on Axis java running on Apache. The Axis c++ deployed always
gave me the resonse "Service not registered at this server". 
This is what the packets flowing forth a back according to TCPMonitor look like:
*** Request ***
POST /tgn-services/services/Calculator HTTP/1.1 
Content-Type: text/xml; charset="utf-8" 
SOAPAction: "Calculator#add" 
Content-Length: 541 

<?xml version="1.0" encoding="utf-8" ?> 
SOAP-ENV:encodingStyle="  <>"

xmlns:SOAP-ENC="  <>"

xmlns:SOAP-ENV="  <>"

xmlns:xsd="  <>" 
xmlns:xsi="  <>">

<ns1:add xmlns:ns1="  <>"> 
<a xsi:type="xsd:int">7</a> 
<b xsi:type="xsd:int">7</b> 

*** Response *** 

HTTP/1.1 200 OK 
Content-Type: text/xml; charset=utf-8 
Transfer-Encoding: chunked 
Date: Thu, 29 Jan 2004 23:14:06 GMT 
Server: Apache Coyote/1.0 

<?xml version="1.0" encoding="UTF-8"?> 
<soapenv:Envelope xmlns:soapenv="  <>"
xmlns:xsd="  <>" xmlns:xsi="

  <ns1:addResponse soapenv:encodingStyle="  <>" xmlns:ns1="  <>">

   <ns1:addReturn xsi:type="xsd:int">14</ns1:addReturn> 

This is what I had to do to make it work:
* There was a problem here at SoapSerializer.cpp(597). The code "pParam->m_Value.pStrValue
= *((char**)(pValue));" that prevented the parameters from getting serialized. I've replace
it with: "pParam->m_Value.pStrValue = reinterpret_cast<char*>(pValue);" 

* The odd sequence of characters "1f9 " (apparently code generated from Apache or perhaps
the Axis java?) in the begining of the response envelope breaks the parser. I patched it in
the Receiver.cpp(98) with the code "m_pMsg+=5;" to shift the pointer address;

* The most problematic thing I'm still looking at is that the linefeed coming within the response
get added as elements in the XMLParser and break the parsing in the soapdeserealization during
the SoapParserExpat::Next(). The solution seems to be stripping those linefeed chars from
the response before parsing;
I've tried to keep track of everything I did but might have missed a thing or two. However,
as far as I can remember this code seems solid and I had to make only minor environment changes
to compile using VC7.

-----Original Message-----
From: Dan Labrecque []
Sent: Friday, January 30, 2004 10:28 AM
Subject: WebSphere Interop problems (Array types)

I am testing basic interoperability between WebSphere Studio Application Developer (WSAD)
V5.1.1 and Axis C++ 1.0. 

I successfully installed Axis C++ with Apache 1.3.28 on Win2000, and successfully tested InteropBase
tests between generated Axis C++ Client and generated InteropBase.dll web service. 

I then imported the InteropBase.wsdl into  WSAD V5.1.1 and generated corresponding web service
client and web service and successfully tested this within WSAD. 

My primary intention is to test interoperability between WebSphere client to Axis C++ web
service. When I point the WSAD client to the Axis C++ web service, the echo methods specifying
basic types (e.g. integer, string, float) are successful, but *all* echo methods specifying
array types fail with the Axis C++ container returning back a vaild SOAP response (i.e. not
a SOAP Fault) but with no return elements in the respose. 

I have captured the message flows (using the WSAD TCP/IP monitor server) for three cases -
echoStringArray, echoIntegerArray, and echoFloatArray. All of the results are the same, a
SOAP response with no elements returned. Could anyone tell why this is not working - my intention
is to fully get the Interop tests successful between WebSphere clients and Axis C++ web services.

Thanks and Best Regards, 

View raw message