我试图捕获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
答案 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.");
}