2012-01-30 65 views
2

我正在用CXF 2.3.3开发SOAP Web服务。我想在用户提交错误数据时抛出一个自定义异常。我的异常类看起来像这样。CXF - 自定义异常未被CXF捕获

@WebFault(name="InvalidUserDataException", targetNamespace="http://foo.bar.com/") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class InvalidUserDataException extends RuntimeException { 

public InvalidUserDataException(){ 
    super(); 
} 

    String validationErrors; 

} 

在我的方法实现类我故意抛出此异常,看的SOAPFault异常是否是由CXF返回到客户端,但无论我做任何同样的错误,这些类别的结果:createNewUser已经抛出异常,现在展开。

请注意,WSUserRegistration接口还声明自己createNewUser方法会引发InvalidUserDataException。

public class WSUserRegistrationImpl implements WSUserRegistration { 

@Autowired 
IWSUserValidationProxy validationProxyImpl; 

@Override 
public int createNewUser(RegistrationInputProperty registrationInfo) throws InvalidUserDataException { 

    if (true) { 
     throw new InvalidUserDataException(); 
    } 
    return 1; 
} 

}

我的目标是赶上从SOAPFaultOutInterceptor此异常,并返回一个定制faultDetail。

如何让CXF捕获此错误并返回SOAPFault对象?有任何想法吗?

回答

0
+0

你好dursun,我仍然得到相同的错误“createNewUser已经抛出异常,现在展开”没有运气。顺便说一句,我是CXF的新手 – user1177489 2012-01-30 08:18:33

+0

除了上面的内容外,是否还有其他注释? – user1177489 2012-01-30 11:46:31

+0

好的。解决了,即使我已启动程序的拦截我福尔戈添加 这个片段cxf.xml文件和CXF没有登录传出的SOAPFault异常消息使我认为SOAPFault消息在遇到错误时不是由CXF生成的。 – user1177489 2012-02-02 05:28:52