APAR status
Closed as program error.
Error description
There is a polymorphism problem with arrays.
With the following WSDL:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://sample.ibm.com"
xmlns:impl="http://sample.ibm.com"
xmlns:intf="http://sample.ibm.com"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<schema elementFormDefault="qualified"
targetNamespace="http://sample.ibm.com"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:impl="http://sample.ibm.com"
xmlns:intf="http://sample.ibm.com"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<element name="serviceBundle">
<complexType>
<sequence>
<element maxOccurs="unbounded" name="bundle"
type="xsd:anyType"/>
</sequence>
</complexType>
</element>
<element name="serviceBundleResponse">
<complexType>
<sequence/>
</complexType>
</element>
</schema>
</wsdl:types>
<wsdl:message name="serviceBundleRequest">
<wsdl:part element="intf:serviceBundle"
name="parameters"/>
</wsdl:message>
<wsdl:message name="serviceBundleResponse">
<wsdl:part element="intf:serviceBundleResponse"
name="parameters"/>
</wsdl:message>
<wsdl:portType name="Bundler">
<wsdl:operation name="serviceBundle">
<wsdl:input message="intf:serviceBundleRequest"
name="serviceBundleRequest"/>
<wsdl:output message="intf:serviceBundleResponse"
name="serviceBundleResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="BundlerSoapBinding" type="intf:Bundler">
<wsdlsoap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="serviceBundle">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="serviceBundleRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="serviceBundleResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="BundlerService">
<wsdl:port binding="intf:BundlerSoapBinding"
name="Bundler">
<wsdlsoap:address
location="http://localhost:9080/bundled/services/Bundler"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
We end up with the SOAP message:
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<serviceBundle xmlns="http://sample.ibm.com">
<bundle xsi:type="soapenc:Array"
soapenc:arrayType="xsd:anyType[2]"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<item xmlns="">
<p1 xmlns="http://sample.ibm.com">m1</p1>
<p2 xmlns="http://sample.ibm.com">5</p2>
</item>
<item xmlns="">
<p1 xmlns="http://sample.ibm.com">m2</p1>
</item>
</bundle>
</serviceBundle>
</soapenv:Body>
</soapenv:Envelope>
This is a doc/lit wrapped WSDL. Where did the soapenc:array
come from?
I would have expected
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<serviceBundle xmlns="http://sample.ibm.com">
<item xmlns="">
<p1 xmlns="http://sample.ibm.com">m1</p1>
<p2 xmlns="http://sample.ibm.com">5</p2>
</item>
<item xmlns="">
<p1 xmlns="http://sample.ibm.com">m2</p1>
</item>
</serviceBundle>
</soapenv:Body>
</soapenv:Envelope>
I also would have expected the actual element names, not "item",
but perhaps that's an artifact of the soapenc:Array problem?
If I use -noWrappedOperations, I get the correct message.
Local fix Problem summary
****************************************************************
* USERS AFFECTED: Anyone using polymorphic types in WSDL. *
****************************************************************
* PROBLEM DESCRIPTION: Polymorphic array types do not work *
* correctly. *
****************************************************************
* RECOMMENDATION: *
****************************************************************
Polymorphic types that are defined in WSDL as some sort of
sequence do not serialize properly in the web services
engine.
Problem conclusion
The web services engine was not examining the depth of the
polymorphic sequence types closely enough to be able to
determine the correct type to serialize.
Temporary fix Comments
APAR information |
APAR number |
PQ91978 |
Reported component name |
WAS BASE 5.0 |
Reported component ID |
5630A3600 |
Reported release |
10W |
Status |
CLOSED PER |
PE |
NoPE |
HIPER |
NoHIPER |
Special Attention |
NoSpecatt |
Submitted date |
2004-07-26 |
Closed date |
2004-08-09 |
Last modified date |
2004-08-09 |
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Modules/Macros
Publications Referenced
Applicable component levels |
R003 PSY |
UP |
R00A PSY |
UP |
R00H PSY |
UP |
R00I PSY |
UP |
R00P PSY |
UP |
R00S PSY |
UP |
R00W PSY |
UP |
R103 PSY |
UP |
R10A PSY |
UP |
R10H PSY |
UP |
R10I PSY |
UP |
R10P PSY |
UP |
R10S PSY |
UP |
R10W PSY |
UP |
|