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>