We have an server application running in WebSphere 6.1 and a client
using Axis 1.4. Both the server and client are Java applications running
in Java 1.4.2.
The server and client side Java is generated from WSDL using axis and
websphere ant target's wsdl2java.
The server throws custom checked exceptions and we try to catch these on
the client side. The problem is that they appear only as AxisFault with
the textual part as the fully qualified name of the server exception
that was thrown. We are expecting the client exception that corresponds
to the server exception.
The exception I'm currently investigating is an exception containing no
extra data. I have used a network analyzer and found the web service
data sent by WebSphere to the client, which shows how the exception is
serialized for sending to the client. See data content for the message
sent here:
<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:Header/>
<soapenv:Body>
<soapenv:Fault>
<faultcode
xmlns:p799="http://backend.product.company.com">
p799:PassengerNotExistException
</faultcode>
<faultstring>
<![CDATA[com.company.product.webservice.backend.server.PassengerNotExistException]]>
</faultstring>
<detail encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<fault href="#id0"/>
</detail>
</soapenv:Fault>
<multiRef id="id0" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="p799:PassengerNotExistException"
xmlns:p799="http://backend.product.company.com"/>
</soapenv:Body>
</soapenv:Envelope>
It can be seen that the exception is serialized in some way but I do not
know if the problem is that Axis cannot deserialize this format to the
correct exception and therefore gives the AxisFault instead ?
Or do anyone have any idea on how we can solve this problem?
I reckon the information on the exception issues in webservices are
sparsely documented at best.
Here follows an excerpt of the WSDL specifications.
<wsdl:types>
<xsd:schema targetNamespace="http://backend.product.company.com">
<xsd:complexType name="PassengerNotExistException">
<sequence />
</xsd:complexType>
</wsdl:types>
<wsdl:message name="PassengerNotExistException">
<wsdl:part name="fault" type="backend:PassengerNotExistException" />
</wsdl:message>
<wsdl:portType name="BackendInterface">
<wsdl:operation name="getClients">
<wsdl:input message="..." />
<wsdl:output message="..." />
<wsdl:fault name="PassengerNotExistException"
message="backend:PassengerNotExistException" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="BackendInterfaceSOAP" type="backend:BackendInterface">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="getClients">
<soap:operation
soapAction="http://backend.product.company.com/getClients" />
<wsdl:input>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://backend.product.company.com" />
</wsdl:input>
<wsdl:output>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://backend.product.company.com" />
</wsdl:output>
<wsdl:fault name="PassengerNotExistException">
<soap:fault name="PassengerNotExistException"
use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://backend.product.company.com" />
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
Regards,
Henrik
--
*Henrik Hjalmarsson*
System Developer
Precise Biometrics Solutions AB
Bryggaregatan 11
653 40 Karlstad
Sweden
Mobile +46 730 39 10 35
Fax +46 54 10 13 72
Email [EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>
Visit our website www.precisebiometrics.com
<http://www.precisebiometrics.com>
*Confidentiality notice*: /The information contained in this e-mail
message, including any attachments, is for the sole use of the intended
recipient(s) or entity to which it is addressed and may be privileged
and confidential. Any unauthorized review, disclosure or distribution or
other use of, or taking of any action in reliance upon this information
by persons or entities other than the intended recipient is prohibited.
If you are not the intended recipient, please contact the sender by
reply e-mail and delete the original message and all copies from your
computer./