Well, it could be related to CXF-1080, for which Dan Kulp cooked up a
fix today. However, if you have explicit @WebFaults, I'm not sure what
to think.

A test case might be good.

> -----Original Message-----
> From: Tolan, Michael E [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, October 03, 2007 1:26 PM
> To: cxf-user@incubator.apache.org
> Subject: Getting SoapFault instead of specified exception
> 
> I'm having an issue that I think seems similar to CXF-1028.
> 
> 
> 
> I'm using CXF-2.0.2 to deploy a JAX-WS service through an Apache
Tomcat
> instance running CXF-Servlet.
> 
> 
> 
> I'm building a simple java-first registration/login service, and
> attempting my methods to throw service-specific exceptions by using
> Exception classes with the @WebFault annotation. However, the client
is
> seeing a generic SoapFault, albeit with some of my exception-specific
> data in the details section.
> 
> 
> 
> I'll be the first to admit that I'm probably doing something wrong,
I've
> been trying to get this to work for about a week (part of the time
using
> 2.0.1). If there's any more information that would be helpful. I'm
happy
> to provide it, just don't want to create an overwhelmingly lengthy
email
> if I'm messing up something obvious.
> 
> 
> 
> Thanks for any help,
> 
> -Mike
> 
> 
> 
> 
> 
> Soap Request:
> 
> ------------------------------------
> 
> <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
> xmlns:soap="http://soap.webservices.bos.foo.com/";>
> 
>    <soapenv:Header/>
> 
>    <soapenv:Body>
> 
>       <soap:register>
> 
>          <username>Mike</username>
> 
>          <password>mike</password>
> 
>          <confirm_password>mike2</confirm_password>
> 
>       </soap:register>
> 
>    </soapenv:Body>
> 
> </soapenv:Envelope>
> 
> 
> 
> 
> 
> Soap Response:
> 
> --------------------------------------
> 
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
> 
>    <soap:Body>
> 
>       <soap:Fault>
> 
>          <faultcode>soap:Server</faultcode>
> 
>          <faultstring>Fault occurred while processing.</faultstring>
> 
>          <detail>
> 
>             <ns2:faultDetail xsi:nil="true"
> xmlns:ns2="http://soap.webservices.bos.foo.com/";
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
> 
>          </detail>
> 
>       </soap:Fault>
> 
>    </soap:Body>
> 
> </soap:Envelope>
> 
> 
> 
> 
> 
> Exception Class:
> 
> ---------------------------------------
> 
> package com.foo.bos.exception;
> 
> 
> 
> import com.foo.bos.data.FaultDetail;
> 
> import javax.xml.ws.WebFault;
> 
> 
> 
>
@WebFault(name="faultDetail",targetNamespace="http://soap.webservices.bo
> s.foo.com/",faultBean="com.foo.bos.data.FaultDetail")
> 
> public class PasswordMismatchException extends Exception {
> 
> 
> 
>                 private FaultDetail details;
> 
> 
> 
>                 public PasswordMismatchException() {super();}
> 
>                 public FaultDetail getFaultInfo() {return details;}
> 
>                 public PasswordMismatchException(String msg,
FaultDetail
> details) {
> 
>                                 super(msg);
> 
>                                 this.details = details;
> 
>                 }
> 
>                 public PasswordMismatchException(String msg,
FaultDetail
> details, Throwable t) {
> 
>                                 super(msg,t);
> 
>                                 this.details = details;
> 
>                 }
> 
> }
> 
> 
> 
> 
> 
> Simplified Generated WSDL:
> 
> -------------------------------------
> 
> <?xml version="1.0" encoding="utf-8"?><wsdl:definitions
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
> xmlns:tns="http://soap.webservices.bos.foo.com/";
> xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> name="LoginServiceImplService"
> targetNamespace="http://soap.webservices.bos.foo.com/";>
> 
> 
> 
> <wsdl:types>
> 
>   <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
> attributeFormDefault="unqualified" elementFormDefault="unqualified"
> targetNamespace="http://soap.webservices.bos.foo.com/";
> xmlns:tns="http://soap.webservices.bos.foo.com/";>
> 
>   <xs:element name="faultDetail">
> 
>     <xs:complexType>
> 
>       <xs:sequence>
> 
>       <xs:element name="minor" type="xs:short"/>
> 
>       <xs:element name="major" type="xs:short"/>
> 
>       </xs:sequence>
> 
>     </xs:complexType>
> 
>   </xs:element>
> 
> 
> 
>   <xs:element name="register" type="tns:register"/>
> 
>     <xs:complexType name="register">
> 
>       <xs:sequence>
> 
>         <xs:element minOccurs="0" name="username" type="xs:string"/>
> 
>         <xs:element minOccurs="0" name="password" type="xs:string"/>
> 
>         <xs:element minOccurs="0" name="confirm_password"
> type="xs:string"/>
> 
>       </xs:sequence>
> 
>     </xs:complexType>
> 
> 
> 
>   <xs:element name="registerResponse" type="tns:registerResponse"/>
> 
>   <xs:complexType name="registerResponse">
> 
>     <xs:sequence>
> 
>       <xs:element minOccurs="0" ref="tns:sessionId"/>
> 
>     </xs:sequence>
> 
>   </xs:complexType>
> 
> </xs:schema>
> 
> </wsdl:types>
> 
> 
> 
> <wsdl:message name="PasswordMismatchException">
> 
>   <wsdl:part element="tns:faultDetail"
name="PasswordMismatchException">
> 
> </wsdl:part>
> 
> </wsdl:message>
> 
>   <wsdl:message name="registerResponse">
> 
>     <wsdl:part element="tns:registerResponse" name="result">
> 
>     </wsdl:part>
> 
>   </wsdl:message>
> 
> 
> 
>   <wsdl:message name="register">
> 
>     <wsdl:part element="tns:register" name="parameters">
> 
>     </wsdl:part>
> 
>   </wsdl:message>
> 
> 
> 
>   <wsdl:portType name="LoginService">
> 
>     <wsdl:operation name="register">
> 
>       <wsdl:input message="tns:register" name="register"></wsdl:input>
> 
>       <wsdl:output message="tns:registerResponse"
> name="registerResponse"></wsdl:output>
> 
>       <wsdl:fault message="tns:PasswordMismatchException"
> name="PasswordMismatchException">
> 
>     </wsdl:fault>
> 
>     </wsdl:operation>
> 
> 
> 
>   </wsdl:portType>
> 
>   <wsdl:binding name="LoginServiceImplServiceSoapBinding"
> type="tns:LoginService">
> 
>     <soap:binding style="document"
> transport="http://schemas.xmlsoap.org/soap/http"/>
> 
> 
> 
>     <wsdl:operation name="register">
> 
>       <soap:operation soapAction="" style="document"/>
> 
>       <wsdl:input name="register">
> 
>         <soap:body use="literal"/>
> 
>       </wsdl:input>
> 
> 
> 
>       <wsdl:output name="registerResponse">
> 
>         <soap:body use="literal"/>
> 
>       </wsdl:output>
> 
>       <wsdl:fault name="PasswordMismatchException">
> 
>         <soap:fault name="PasswordMismatchException" use="literal"/>
> 
>       </wsdl:fault>
> 
>     </wsdl:operation>
> 
> 
> 
>   </wsdl:binding>
> 
>   <wsdl:service name="LoginServiceImplService">
> 
> 
> 
>     <wsdl:port binding="tns:LoginServiceImplServiceSoapBinding"
> name="LoginServiceImplPort">
> 
>       <soap:address location="http://serveraddress/loginService"/>
> 
>     </wsdl:port>
> 
>   </wsdl:service>
> 
> </wsdl:definitions>

Reply via email to