Java Ws Catch Interceptor错误

时间:2013-03-18 09:49:53

标签: java web-services jboss cxf

我试图捕获Web服务错误但是也无法捕获,我该如何捕获此错误? 请注意,我使用的是Java-Ws(不是Spring)和JBoss

11:19:54,457 WARNING [org.apache.cxf.phase.PhaseInterceptorChain] 
(http--0.0.0.0-8080-1) Interceptor for {http://services.com/}OppService#{http:
//services.com/}getopp has thrown exception, unwinding now:
org.apache.cxf.interceptor.Fault: Unmarshalling Error: Not a number: asdas 

如果我发送了一个数字,一切都运行正常,但我希望代码中断所以我可以捕获错误,问题是我似乎无法抓住它,因为它没有达到java代码也没有处理程序。错误甚至在处理程序之前。

请注意,我正在起诉Java注释来构建wsdl

1 个答案:

答案 0 :(得分:0)

看看DefaultValidationEventHandler。根据文档:

  

接收验证警告或错误的通知。该   ValidationEvent将嵌入一个ValidationEventLocator   表示发生错误或警告的位置。如果是未经检查的运行时   从此方法抛出异常,JAXB提供程序将对其进行处理   好像该方法返回false并中断当前的unmarshal,   验证或编组操作。

所以基本上你需要做的是扩展那个类,覆盖handleEvent(ValidationEvent event)方法并检查例如:

if (event.getSeverity() == ValidationEvent.WARNING) {
    return super.handleEvent(event);
} else {
    throw new RuntimeException("build your own message.");
}