We are trying to write a SOAP server that will talk to MS .Net, WebSphere,
and AXIS clients using the document/literal style. However, there seems to
be some disagreement as to how namespaces should be handled within the SOAP
body. All clients were generated using the WSDL attached below. For the
AXIS client, I used the WSDL2JAVA tool in beta 2 of the AXIS toolkit. The
.Net client generates the following request:

<soap:Body>
<XTCP211_INPUT_AREA xmlns="http://www.fds.com/schemas/XTCP211";>
� <XTCP211_IN_SERVICE>XTCP211</XTCP211_IN_SERVICE>
</XTCP211_INPUT_AREA>
</soap:Body>

However, the AXIS client generates it a little differently:

<SOAP-ENV:Body>
<XTCP211_INPUT_AREA xmlns="http://www.fds.com/schemas/XTCP211";>
     <XTCP211_IN_SERVICE xmlns="">XTCP211</XTCP211_IN_SERVICE>
</XTCP211_INPUT_AREA>
</SOAP-ENV:Body>

The AXIS client is forcing "XTCP211_IN_SERVICE" into a blank namespace, so
the server does not recognize it when it parses the request. It seems to me
that since the element is defined within the namespace, the client should
not override it when building the request. Am I missing something?

Here is the WSDL:

<?xml version="1.0" encoding="UTF-8" ?>
<definitions name="XTCP211" targetNamespace="http://wsdl.fsg.com/XTCP211";
xmlns="http://schemas.xmlsoap.org/wsdl/";
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; xmlns:tns
="http://wsdl.fsg.com/XTCP211";
xmlns:types="http://www.fds.com/schemas/XTCP211";>
<types>
 <xsd:schema targetNamespace="http://www.fds.com/schemas/XTCP211"; xmlns:xsd
="http://www.w3.org/2001/XMLSchema";
xmlns:types="http://www.fds.com/schemas/XTCP211";>
  <xsd:element name="XTCP211_INPUT_AREA" type
="types:XTCP211_INPUT_AREAType" />
  <xsd:element name="XTCP211_OUTPUT_AREA" type
="types:XTCP211_OUTPUT_AREAType" />
  <xsd:complexType name="XTCP211_INPUT_AREAType">
   <xsd:sequence>
    <xsd:element name="XTCP211_IN_SERVICE">
     <xsd:simpleType>
      <xsd:restriction base="xsd:string">
       <xsd:maxLength value="8" />
      </xsd:restriction>
     </xsd:simpleType>
    </xsd:element>
   </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="XTCP211_OUTPUT_AREAType">
   <xsd:sequence>
    <xsd:element name="XTCP211_OUT_PROGRAM">
     <xsd:simpleType>
      <xsd:restriction base="xsd:string">
       <xsd:maxLength value="8" />
      </xsd:restriction>
     </xsd:simpleType>
    </xsd:element>
    <xsd:element name="XTCP211_OUT_DATE">
     <xsd:simpleType>
      <xsd:restriction base="xsd:decimal">
       <xsd:totalDigits value="7" />
       <xsd:fractionDigits value="0" />
      </xsd:restriction>
     </xsd:simpleType>
    </xsd:element>
    <xsd:element name="XTCP211_OUT_TIME">
     <xsd:simpleType>
      <xsd:restriction base="xsd:decimal">
       <xsd:totalDigits value="7" />
       <xsd:fractionDigits value="0" />
      </xsd:restriction>
     </xsd:simpleType>
    </xsd:element>
    <xsd:element name="XTCP211_OUT_TERMID">
     <xsd:simpleType>
      <xsd:restriction base="xsd:string">
       <xsd:maxLength value="4" />
      </xsd:restriction>
     </xsd:simpleType>
    </xsd:element>
    <xsd:element name="XTCP211_OUT_TRANID">
     <xsd:simpleType>
      <xsd:restriction base="xsd:string">
       <xsd:maxLength value="4" />
      </xsd:restriction>
     </xsd:simpleType>
    </xsd:element>
    <xsd:element name="XTCP211_OUT_APPLID">
     <xsd:simpleType>
      <xsd:restriction base="xsd:string">
       <xsd:maxLength value="8" />
      </xsd:restriction>
     </xsd:simpleType>
    </xsd:element>
    <xsd:element name="XTCP211_OUT_USERID">
     <xsd:simpleType>
      <xsd:restriction base="xsd:string">
       <xsd:maxLength value="8" />
      </xsd:restriction>
     </xsd:simpleType>
    </xsd:element>
    <xsd:element name="XTCP211_OUT_RESPONSE">
     <xsd:simpleType>
      <xsd:restriction base="xsd:string">
       <xsd:maxLength value="8" />
      </xsd:restriction>
     </xsd:simpleType>
    </xsd:element>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:schema>
</types>
<message name="executeRequest">
 <part name="xmlIn" element="types:XTCP211_INPUT_AREA" />
</message>
<message name="executeResponse">
 <part name="xmlOut" element="types:XTCP211_OUTPUT_AREA" />
</message>
<portType name="XTCP211_PortType">
 <operation name="Execute">
  <input message="tns:executeRequest" />
  <output message="tns:executeResponse" />
 </operation>
</portType>
<binding name="XTCP211_ServiceBinding" type="tns:XTCP211_PortType">
 <soap:binding style="document" transport
="http://schemas.xmlsoap.org/soap/http"; />
 <operation name="Execute">
  <soap:operation soapAction="http://soap.fsg.com/fedgate/RPC/XTCP211";
style="document" />
  <input>
   <soap:body use="literal" namespace="http://www.fds.com/schemas/XTCP211";
/>
  </input>
  <output>
   <soap:body use="literal" namespace="http://www.fds.com/schemas/XTCP211";
/>
  </output>
 </operation>
</binding>
 <service name="XTCP211_Service">
  <port name="XTCP211_ServicePort" binding="tns:XTCP211_ServiceBinding">
   <soap:address location="http://B06UFSNT1:8080/soap/DEVAPP/XTCP211"; />
  </port>
 </service>
</definitions>


Thanks,
Tom Damon
System Specialist,
Federated Systems Group



Reply via email to