axis-c-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Percey, Michael (MED US)" <michael.per...@siemens.com>
Subject Possible Defect in Axis C++ 1.5
Date Mon, 09 Jan 2006 20:37:56 GMT

I've found what may be a defect in Axis CPP, or could also be something I've
incorrectly configured.
 
I have a VB 6.0 Client UI that must communicate with a Websphere Soap
Server.  I'm building a CPP DLL using Axis C++ 1.5 to translate the VB
request into a SOAP Request, forward that request to Websphere, receive the
corresponding response, translate and return that response to the VB Client.

 
Note that we've already integrated Axis Java 1.3 into our Java Swing client
and it is succesfully processing Requests/Responses with the same Websphere
Soap Server.
 
I have the DLL up and running, and it is serializing the VB Request and
forwarding that request on to the server.  The following Parser error occurs
when the server attempts to deserialize the request:

org.xml.sax.SAXException: WSWS3047E: Error: Cannot deserialize element
minorVersion of bean com.siemens.soarian.se.ctk.dto.WSRequestDTO.

I ran up the TCPMonitor to get a look at the SOAP Message that is sent, and
It looks to me like the Serializer on the C++ client isn't defining
namespaces appropriately for complex objects.  The .wsdl file was generated
using the Websphere utility java2wsdl.  Following is the portion of the
.wsdl file relevant to the request that I'm sending:
 
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="
<http://service.ctk.se.soarian.siemens.com/>
http://service.ctk.se.soarian.siemens.com" 
 xmlns:impl=" <http://service.ctk.se.soarian.siemens.com/>
http://service.ctk.se.soarian.siemens.com" 
 xmlns:intf=" <http://service.ctk.se.soarian.siemens.com/>
http://service.ctk.se.soarian.siemens.com" 
 xmlns:tns3=" <http://dto.ctk.se.soarian.siemens.com/>
http://dto.ctk.se.soarian.siemens.com" 
 xmlns:tns4=" <http://client.soa.se.soarian.siemens.com/>
http://client.soa.se.soarian.siemens.com" 
 xmlns:wsdl=" <http://schemas.xmlsoap.org/wsdl/>
http://schemas.xmlsoap.org/wsdl/" 
 xmlns:wsdlsoap=" <http://schemas.xmlsoap.org/wsdl/soap/>
http://schemas.xmlsoap.org/wsdl/soap/" 
 xmlns:wsi=" <http://ws-i.org/profiles/basic/1.1/xsd>
http://ws-i.org/profiles/basic/1.1/xsd" 
 xmlns:xsd=" <http://www.w3.org/2001/XMLSchema>
http://www.w3.org/2001/XMLSchema">
 <wsdl:types>
 
  <schema targetNamespace=" <http://dto.ctk.se.soarian.siemens.com/>
http://dto.ctk.se.soarian.siemens.com" 
     xmlns=" <http://www.w3.org/2001/XMLSchema>
http://www.w3.org/2001/XMLSchema" 
     xmlns:impl=" <http://service.ctk.se.soarian.siemens.com/>
http://service.ctk.se.soarian.siemens.com" 
     xmlns:intf=" <http://service.ctk.se.soarian.siemens.com/>
http://service.ctk.se.soarian.siemens.com" 
     xmlns:tns4=" <http://client.soa.se.soarian.siemens.com/>
http://client.soa.se.soarian.siemens.com" 
     xmlns:wsdl=" <http://schemas.xmlsoap.org/wsdl/>
http://schemas.xmlsoap.org/wsdl/" 
     xmlns:xsd=" <http://www.w3.org/2001/XMLSchema>
http://www.w3.org/2001/XMLSchema">
 
   <import namespace=" <http://client.soa.se.soarian.siemens.com>
http://client.soa.se.soarian.siemens.com"/>
 
   <complexType name="WSRequestDTO">
    <complexContent>
     <extension base="tns4:BaseDTO">
      <sequence>
       <element name="action" nillable="true" type="xsd:string"/>
       <element name="object" nillable="true" type="xsd:string"/>
       <element name="parms" nillable="true" type="xsd:string"/>
       <element name="requestXML" nillable="true" type="xsd:string"/>
      </sequence>
     </extension>
    </complexContent>
   </complexType>
 
   <complexType name="CtkResponseDTO">
    <complexContent>
     <extension base="tns4:ResponseDTO">
      <sequence>
       <element name="result" nillable="true" type="xsd:string"/>
       <element name="source" nillable="true" type="xsd:string"/>
       <element name="masterFileID" type="xsd:int"/>
       <element name="metarecordID" type="xsd:int"/>
      </sequence>
     </extension>
    </complexContent>
   </complexType>
 
  </schema>
 
  <schema targetNamespace=" <http://client.soa.se.soarian.siemens.com/>
http://client.soa.se.soarian.siemens.com" 
     xmlns=" <http://www.w3.org/2001/XMLSchema>
http://www.w3.org/2001/XMLSchema" 
     xmlns:impl=" <http://service.ctk.se.soarian.siemens.com/>
http://service.ctk.se.soarian.siemens.com" 
     xmlns:intf=" <http://service.ctk.se.soarian.siemens.com/>
http://service.ctk.se.soarian.siemens.com" 
     xmlns:wsdl=" <http://schemas.xmlsoap.org/wsdl/>
http://schemas.xmlsoap.org/wsdl/" 
     xmlns:xsd=" <http://www.w3.org/2001/XMLSchema>
http://www.w3.org/2001/XMLSchema">
 
   <complexType abstract="true" name="BaseDTO">
    <sequence>
     <element name="minorVersion" type="xsd:int"/>
    </sequence>
   </complexType>
 
   etc. ...
 
 </wsdl:types>
 
</wsdl:definitions>
 
Following is the SOAP Request that I intercepted using the TCPMonitor:
 
<?xml version='1.0' encoding='utf-8' ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="
<http://schemas.xmlsoap.org/soap/envelope/>
http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsd=" <http://www.w3.org/2001/XMLSchema>
http://www.w3.org/2001/XMLSchema" 
    xmlns:xsi=" <http://www.w3.org/2001/XMLSchema-instance>
http://www.w3.org/2001/XMLSchema-instance">

<SOAP-ENV:Body>
<ns1:processRequest xmlns:ns1=" <http://service.ctk.se.soarian.siemens.com/>
http://service.ctk.se.soarian.siemens.com">

<arg_0_0>
    <ns2:minorVersion xmlns:ns2=" <http://dto.ctk.se.soarian.siemens.com>
http://dto.ctk.se.soarian.siemens.com">1</ns2:minorVersion>
    <ns3:action xmlns:ns3=" <http://dto.ctk.se.soarian.siemens.com>
http://dto.ctk.se.soarian.siemens.com">getMasterFileList</ns3:action>
    <ns4:object xmlns:ns4=" <http://dto.ctk.se.soarian.siemens.com>
http://dto.ctk.se.soarian.siemens.com">MasterFile</ns4:object>
    <ns5:parms xmlns:ns5=" <http://dto.ctk.se.soarian.siemens.com>
http://dto.ctk.se.soarian.siemens.com"></ns5:parms>
    <ns6:requestXML xmlns:ns6=" <http://dto.ctk.se.soarian.siemens.com>
http://dto.ctk.se.soarian.siemens.com"></ns6:requestXML>
</arg_0_0>
<arg_1_0 xsi:nil="true"></arg_1_0>

</ns1:processRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 
The minorVersion attribute of WSRequestDTO comes from the BaseDTO object
which is defined in the package client.soa.se.soarian.siemens.com.  This
seems to be correctly identified in the .wsdl file as follows:
 
    <extension base="tns4:BaseDTO">
 
where tns4 = client.soa.se.soarian.siemens.com but incorrectly serialized in
the SOAP message:
 
<ns2:minorVersion xmlns:ns2=" <http://dto.ctk.se.soarian.siemens.com>
http://dto.ctk.se.soarian.siemens.com">1</ns2:minorVersion>
 
where it identifies the incorrect namespace.
 
I am just getting my feet wet with SOAP processing, so feel free to get out
the flamethrowers.  If you need more detail, I'd be happy to oblige.
 
    Thanks  -  MikeP


-------------------------------------------------------------------------------
This message and any included attachments are from Siemens Medical Solutions 
USA, Inc. and are intended only for the addressee(s).  
The information contained herein may include trade secrets or privileged or 
otherwise confidential information.  Unauthorized review, forwarding, printing, 
copying, distributing, or using such information is strictly prohibited and may 
be unlawful.  If you received this message in error, or have reason to believe 
you are not authorized to receive it, please promptly delete this message and 
notify the sender by e-mail with a copy to Central.SecurityOffice@shs.siemens.com 

Thank you
Mime
View raw message