You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Mark Whelan <ma...@ibsglobalweb.com> on 2006/01/12 01:09:15 UTC

[Axis 1.2.1] Unwanted xsi types in request message

G'day,

I've done a lot of reading on this topic, tried a lot of the suggested 
strategies, but I have yet to find a suitable solution. I am using Axis 
to generate client-side stubs from WSDL provided to us from another 
party. The resulting request messages when connecting to the target web 
service (not Axis-based) contain xsi:type attributes that are preventing 
that service from validating the message. I'm using Axis 1.2.1.

Any advice would be appreciated.

cheers

Mark

The (edited) message that is produced is

<?xml version="1.0" encoding="UTF-8"?>
   <soapenv:Envelope 
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <soapenv:Body>
         <Request xmlns="http://blah/foo/WebService">
            <Header>
               <ns1:Environment 
xmlns:ns1="http://blah/foo">DEV</ns1:Environment>
               <ns2:System xmlns:ns2="http://blah/foo">BLAH</ns2:System>
               <ns3:SystemVersion xsi:type="xsd:int" 
xmlns:ns3="http://blah/foo">1</ns3:SystemVersion>
               <ns4:Service 
xmlns:ns4="http://blah/foo">WEBSERVICE</ns4:Service>
               <ns5:ServiceVersion xsi:type="xsd:int" 
xmlns:ns5="http://blah/foo">1</ns5:ServiceVersion>
               <ns6:CountryCode 
xmlns:ns6="http://blah/foo">AU</ns6:CountryCode>
               <ns7:Trace xsi:type="xsd:int" 
xmlns:ns7="http://blah/foo">0</ns7:Trace>
               <ns8:DealerCode xmlns:ns8="http://blah/foo"></ns8:DealerCode>
               <ns9:SSO-ID xmlns:ns9="http://blah/foo">ABC123</ns9:SSO-ID>
            </Header>
         </Request>
      </soapenv:Body>
   </soapenv:Envelope>

The (edited) WSDL/XSD for this service is

<?xml version="1.0" encoding="UTF-8" ?><definitions name="WSDLDef" 
targetNamespace="http://blah/foo/WebService" 
xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:ns1="http://blah/foo" 
xmlns:ns2="http://blah/foo" xmlns:ns3="http://blah/foo/WebService" 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
xmlns:tns="http://blah/foo/WebService" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <types>
    <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:import namespace="http://blah/foo/WebService" 
schemaLocation="WebServiceRequest.xsd"></xsd:import>
</xsd:schema>
    <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:import namespace="http://blah/foo/WebService" 
schemaLocation="WebServiceResponse.xsd"></xsd:import>
</xsd:schema>
  </types>
  <message name="WebServiceRequest">
    <part element="tns:Request" name="Next_Request"></part>
  </message>
  <message name="WebServiceResponse">
    <part element="tns:Response" name="Next_Response"></part>
  </message>
  <portType name="WebServicePortType">
    <operation name="WebService">
      <input message="tns:WebServiceRequest"></input>
      <output message="tns:WebServiceResponse"></output>
    </operation>
  </portType>
  <binding name="WebServiceBinding" type="tns:WebServicePortType">
    <soap:binding style="document" 
transport="http://schemas.xmlsoap.org/soap/http"></soap:binding>
    <operation name="WebService">
      <soap:operation soapAction="WebService"></soap:operation>
      <input>
        <soap:body use="literal"></soap:body>
      </input>
      <output>
        <soap:body use="literal"></soap:body>
      </output>
    </operation>
  </binding>
  <service name="WebService">
    <port binding="tns:WebServiceBinding" name="WebServicePort">
      <soap:address 
location="http://localhost:8080/mediator/services/WebService"></soap:address>
    </port>
  </service>
</definitions>

<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema attributeFormDefault="unqualified" 
elementFormDefault="qualified" 
targetNamespace="http://blah/foo/WebService" 
xmlns="http://blah/foo/WebService" xmlns:ns1="http://blah/foo" 
xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:import namespace="http://blah/foo" 
schemaLocation="RequestHeader.xsd"></xs:import>
    <xs:element name="Request">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Header" type="ns1:Header"></xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema attributeFormDefault="unqualified" 
elementFormDefault="qualified" targetNamespace="http://blah/foo" 
xmlns="http://blah/foo" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:complexType name="Header">
        <xs:sequence>
            <xs:element name="Environment">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="4"></xs:maxLength>
                        <xs:minLength value="2"></xs:minLength>
                        <xs:enumeration value="DEVL"></xs:enumeration>
                        <xs:enumeration value="QA"></xs:enumeration>
                        <xs:enumeration value="PROD"></xs:enumeration>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="System">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="15"></xs:maxLength>
                        <xs:minLength value="3"></xs:minLength>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="SystemVersion">
                <xs:simpleType>
                    <xs:restriction base="xs:int">
                        <xs:minInclusive value="0"></xs:minInclusive>
                        <xs:maxInclusive value="999"></xs:maxInclusive>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="Service">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="30"></xs:maxLength>
                        <xs:minLength value="3"></xs:minLength>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="ServiceVersion">
                <xs:simpleType>
                    <xs:restriction base="xs:int">
                        <xs:minInclusive value="0"></xs:minInclusive>
                        <xs:maxInclusive value="999"></xs:maxInclusive>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="CountryCode">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:length value="2"></xs:length>
                        <xs:enumeration value="AU"></xs:enumeration>
                        <xs:enumeration value="NZ"></xs:enumeration>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="Trace">
                <xs:simpleType>
                    <xs:restriction base="xs:int">
                        <xs:minInclusive value="0"></xs:minInclusive>
                        <xs:maxInclusive value="9"></xs:maxInclusive>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="DealerCode">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:minLength value="5"></xs:minLength>
                        <xs:maxLength value="8"></xs:maxLength>
                        <xs:pattern value="([A-Z0-9])*"></xs:pattern>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="SSO-ID">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:minLength value="6"></xs:minLength>
                        <xs:maxLength value="8"></xs:maxLength>
                        <xs:pattern value="([A-Z0-9])*"></xs:pattern>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:schema>
 


Re: [Axis 1.2.1] Unwanted xsi types in request message

Posted by Anne Thomas Manes <at...@gmail.com>.
Smells like a bug.

On 1/11/06, Mark Whelan <ma...@ibsglobalweb.com> wrote:
>
> G'day,
>
> I've done a lot of reading on this topic, tried a lot of the suggested
> strategies, but I have yet to find a suitable solution. I am using Axis
> to generate client-side stubs from WSDL provided to us from another
> party. The resulting request messages when connecting to the target web
> service (not Axis-based) contain xsi:type attributes that are preventing
> that service from validating the message. I'm using Axis 1.2.1.
>
> Any advice would be appreciated.
>
> cheers
>
> Mark
>
> The (edited) message that is produced is
>
> <?xml version="1.0" encoding="UTF-8"?>
>    <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>       <soapenv:Body>
>          <Request xmlns="http://blah/foo/WebService">
>             <Header>
>                <ns1:Environment
> xmlns:ns1="http://blah/foo">DEV</ns1:Environment>
>                <ns2:System xmlns:ns2="http://blah/foo">BLAH</ns2:System>
>                <ns3:SystemVersion xsi:type="xsd:int"
> xmlns:ns3="http://blah/foo">1</ns3:SystemVersion>
>                <ns4:Service
> xmlns:ns4="http://blah/foo">WEBSERVICE</ns4:Service>
>                <ns5:ServiceVersion xsi:type="xsd:int"
> xmlns:ns5="http://blah/foo">1</ns5:ServiceVersion>
>                <ns6:CountryCode
> xmlns:ns6="http://blah/foo">AU</ns6:CountryCode>
>                <ns7:Trace xsi:type="xsd:int"
> xmlns:ns7="http://blah/foo">0</ns7:Trace>
>                <ns8:DealerCode xmlns:ns8="http://blah/foo"
> ></ns8:DealerCode>
>                <ns9:SSO-ID xmlns:ns9="http://blah/foo">ABC123</ns9:SSO-ID>
>             </Header>
>          </Request>
>       </soapenv:Body>
>    </soapenv:Envelope>
>
> The (edited) WSDL/XSD for this service is
>
> <?xml version="1.0" encoding="UTF-8" ?><definitions name="WSDLDef"
> targetNamespace="http://blah/foo/WebService"
> xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:ns1="http://blah/foo"
> xmlns:ns2="http://blah/foo" xmlns:ns3="http://blah/foo/WebService"
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:tns="http://blah/foo/WebService"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema">
>   <types>
>     <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema">
>     <xsd:import namespace="http://blah/foo/WebService"
> schemaLocation="WebServiceRequest.xsd"></xsd:import>
> </xsd:schema>
>     <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema">
>     <xsd:import namespace="http://blah/foo/WebService"
> schemaLocation="WebServiceResponse.xsd"></xsd:import>
> </xsd:schema>
>   </types>
>   <message name="WebServiceRequest">
>     <part element="tns:Request" name="Next_Request"></part>
>   </message>
>   <message name="WebServiceResponse">
>     <part element="tns:Response" name="Next_Response"></part>
>   </message>
>   <portType name="WebServicePortType">
>     <operation name="WebService">
>       <input message="tns:WebServiceRequest"></input>
>       <output message="tns:WebServiceResponse"></output>
>     </operation>
>   </portType>
>   <binding name="WebServiceBinding" type="tns:WebServicePortType">
>     <soap:binding style="document"
> transport="http://schemas.xmlsoap.org/soap/http"></soap:binding>
>     <operation name="WebService">
>       <soap:operation soapAction="WebService"></soap:operation>
>       <input>
>         <soap:body use="literal"></soap:body>
>       </input>
>       <output>
>         <soap:body use="literal"></soap:body>
>       </output>
>     </operation>
>   </binding>
>   <service name="WebService">
>     <port binding="tns:WebServiceBinding" name="WebServicePort">
>       <soap:address
> location="http://localhost:8080/mediator/services/WebService"
> ></soap:address>
>     </port>
>   </service>
> </definitions>
>
> <?xml version="1.0" encoding="UTF-8" ?>
> <xs:schema attributeFormDefault="unqualified"
> elementFormDefault="qualified"
> targetNamespace="http://blah/foo/WebService"
> xmlns="http://blah/foo/WebService" xmlns:ns1="http://blah/foo"
> xmlns:xs="http://www.w3.org/2001/XMLSchema">
>     <xs:import namespace="http://blah/foo"
> schemaLocation="RequestHeader.xsd"></xs:import>
>     <xs:element name="Request">
>         <xs:complexType>
>             <xs:sequence>
>                 <xs:element name="Header" type="ns1:Header"></xs:element>
>             </xs:sequence>
>         </xs:complexType>
>     </xs:element>
> </xs:schema>
>
> <?xml version="1.0" encoding="UTF-8" ?>
> <xs:schema attributeFormDefault="unqualified"
> elementFormDefault="qualified" targetNamespace="http://blah/foo"
> xmlns="http://blah/foo" xmlns:xs="http://www.w3.org/2001/XMLSchema">
>     <xs:complexType name="Header">
>         <xs:sequence>
>             <xs:element name="Environment">
>                 <xs:simpleType>
>                     <xs:restriction base="xs:string">
>                         <xs:maxLength value="4"></xs:maxLength>
>                         <xs:minLength value="2"></xs:minLength>
>                         <xs:enumeration value="DEVL"></xs:enumeration>
>                         <xs:enumeration value="QA"></xs:enumeration>
>                         <xs:enumeration value="PROD"></xs:enumeration>
>                     </xs:restriction>
>                 </xs:simpleType>
>             </xs:element>
>             <xs:element name="System">
>                 <xs:simpleType>
>                     <xs:restriction base="xs:string">
>                         <xs:maxLength value="15"></xs:maxLength>
>                         <xs:minLength value="3"></xs:minLength>
>                     </xs:restriction>
>                 </xs:simpleType>
>             </xs:element>
>             <xs:element name="SystemVersion">
>                 <xs:simpleType>
>                     <xs:restriction base="xs:int">
>                         <xs:minInclusive value="0"></xs:minInclusive>
>                         <xs:maxInclusive value="999"></xs:maxInclusive>
>                     </xs:restriction>
>                 </xs:simpleType>
>             </xs:element>
>             <xs:element name="Service">
>                 <xs:simpleType>
>                     <xs:restriction base="xs:string">
>                         <xs:maxLength value="30"></xs:maxLength>
>                         <xs:minLength value="3"></xs:minLength>
>                     </xs:restriction>
>                 </xs:simpleType>
>             </xs:element>
>             <xs:element name="ServiceVersion">
>                 <xs:simpleType>
>                     <xs:restriction base="xs:int">
>                         <xs:minInclusive value="0"></xs:minInclusive>
>                         <xs:maxInclusive value="999"></xs:maxInclusive>
>                     </xs:restriction>
>                 </xs:simpleType>
>             </xs:element>
>             <xs:element name="CountryCode">
>                 <xs:simpleType>
>                     <xs:restriction base="xs:string">
>                         <xs:length value="2"></xs:length>
>                         <xs:enumeration value="AU"></xs:enumeration>
>                         <xs:enumeration value="NZ"></xs:enumeration>
>                     </xs:restriction>
>                 </xs:simpleType>
>             </xs:element>
>             <xs:element name="Trace">
>                 <xs:simpleType>
>                     <xs:restriction base="xs:int">
>                         <xs:minInclusive value="0"></xs:minInclusive>
>                         <xs:maxInclusive value="9"></xs:maxInclusive>
>                     </xs:restriction>
>                 </xs:simpleType>
>             </xs:element>
>             <xs:element name="DealerCode">
>                 <xs:simpleType>
>                     <xs:restriction base="xs:string">
>                         <xs:minLength value="5"></xs:minLength>
>                         <xs:maxLength value="8"></xs:maxLength>
>                         <xs:pattern value="([A-Z0-9])*"></xs:pattern>
>                     </xs:restriction>
>                 </xs:simpleType>
>             </xs:element>
>             <xs:element name="SSO-ID">
>                 <xs:simpleType>
>                     <xs:restriction base="xs:string">
>                         <xs:minLength value="6"></xs:minLength>
>                         <xs:maxLength value="8"></xs:maxLength>
>                         <xs:pattern value="([A-Z0-9])*"></xs:pattern>
>                     </xs:restriction>
>                 </xs:simpleType>
>             </xs:element>
>         </xs:sequence>
>     </xs:complexType>
> </xs:schema>
>
>
>