Java Ws Catch拦截器错误
问题描述:
我试图捕获一个Web服务错误,但不能够,我怎么能捕获这个错误? 请注意,我用的Java-WS(不是Spring)和JBossJava Ws Catch拦截器错误
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
答
看看DefaultValidationEventHandler。根据文档:
接收验证警告或错误的通知。 ValidationEvent将在其中嵌入ValidationEventLocator, 指示发生错误或警告的位置。如果从此方法抛出未经检查的运行时 异常,那么JAXB提供程序会将其视为 ,就好像该方法返回false并中断当前的解组,或者打断 验证或编组操作。
所以基本上你需要做的是延长这个类,覆盖handleEvent(ValidationEvent event)
方法和检查如:
if (event.getSeverity() == ValidationEvent.WARNING) {
return super.handleEvent(event);
} else {
throw new RuntimeException("build your own message.");
}
我创建了一个类,并扩展它,你说,并补充了断点,但遗憾的是它不会触发 – rtp 2013-03-18 10:59:52
您如何暴露您的端点?你用Spring了吗?为了被调用,你必须在服务器端的jax-ws属性中注册处理程序。 – 2013-03-18 11:14:53
上午使用Java webservice和webmethod注释,他们正在做的暴露端点和什么不是...的所有工作...没有不使用弹簧,我只是意识到我的HeaderHandler被调用,我认为它不是。 defaulyValidationEventHandler仍然无法正常工作。我使用了 –
rtp
2013-03-18 11:43:25