APAR status
Closed as program error.
Error description
Env: WSAS 5.0.2.5 on Win 2000
Problem Description:
Problem seems similar to
PQ80111 and the solution might need to
be back-ported to 5.0.2.5
WSDL contains an operation that throws certain WSDL faults. The
WSDL fault references a complexType that is extended by several
other complexTypes.
The WSDL2Java generation tool generates the Exception classes
for these faults correctly. However at run-time when an
exception is thrown at run-time only the fault corresponding to
the Base Class is serialized into the fault <detail> element
within the Soap fault. For instance if the exception classes
are BMOFault and BadAddressFault and these correspond to
complexTypes BMOFault and BadAddressFault, and the operation
declares an exception of type BMOFault but at run-time throws
an exception of type BadAddressFault, the serialized <detail>
element only shows up as BMOFault. However interestingly all the
sub- class attributes are serialized correctly within the
BMOFault element, the expected behavior however is that the
root element within <detail> element is <BadAddressFault> and
not <BMOFault>.
Looking through the Serializer and Deserializer code for these
classes, one notices that the xsi:type attribute for BMOFault
element is not being set by the Web Services run-time. This
appears to be a defect since this attribute is set correctly
for situations where inheritance is used for operation
parameters or return values.
The problem is when (from the original message) the client is
given a ParentException by the proxy classes and the additional
information (specialMessage attribute) on the ChildException is
lost. The java client proxy classes are typing an exception
thrown as a ParentException even though there is additional
information at the ChildException level. Java2WSDL tool has an
option that allows you to specify "extra" classes to be added
to the WSDL: -extraClasses <classes>
Both ParentException and ChildException should be thrown out
if you generate the wsdl with this extraClasses flag.
Local fix Problem summary
****************************************************************
* USERS AFFECTED: All WebSphere Application Server users *
****************************************************************
* PROBLEM DESCRIPTION: SOAPFault polymorphism was not working *
****************************************************************
* RECOMMENDATION: *
****************************************************************
When a customer's web service was throwing a fault that had
been a subtype of some other user-defined type, the
deserialization engine was treating it always as the super
type and not the subtype. When it encountered a field
that it did not see in the supertype, deserialization fails.
Problem conclusion
Switched it so that the correct type is loaded from the
xsi:type attribute of the fault. That way, a fault can be
upcasted and still be introspected for it's subtype members.
Temporary fix
Provided temporary fix for the customer to test.
Comments
APAR information |
APAR number |
PQ88476 |
Reported component name |
WAS BASE 5.0 |
Reported component ID |
5630A3600 |
Reported release |
00W |
Status |
CLOSED PER |
PE |
NoPE |
HIPER |
NoHIPER |
Special Attention |
NoSpecatt |
Submitted date |
2004-05-05 |
Closed date |
2004-07-20 |
Last modified date |
2004-07-20 |
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 |
|