如何解决在 spring ws 中向@SoapFault 响应添加详细信息
在我的应用程序中,我想为异常之一返回自定义响应。我通过异常上方的@SoapFault 注释找到了一种方法,它可以正常工作,我得到了自定义故障代码,但由于某种原因它没有在自定义异常解析器中命中我的customizefault 方法,所以我无法向响应添加详细信息。 代码:
public class DetailSoapFaultAnnotationExceptionResolver extends SoapFaultAnnotationExceptionResolver {
private static final QName DESCRIPTION = new QName("description");
private static final QName ERROR = new QName("code");
@Override
protected void customizefault(Object endpoint,Exception ex,SoapFault fault) {
SoapFaultDetail detail = fault.addFaultDetail();
if (ex instanceof ValidationException) {
detail.addFaultDetailElement(DESCRIPTION).addText(validationException.getMessage());
detail.addFaultDetailElement(ERROR).addText("Validation Error");
}
log.error(ex.getMessage(),ex);
}
异常:
@SoapFault(faultCode = FaultCode.CLIENT,locale = "en",faultStringOrReason = "Validation error",customFaultCode = "{URI}SOAP-ENV:Client")
public class ValidationException extends RuntimeException {
public ValidationException(String errorMessage) {
super(errorMessage);
}
}
配置:
@Bean
public DetailSoapFaultAnnotationExceptionResolver detailSoapFaultAnnotationExceptionResolver() {
DetailSoapFaultAnnotationExceptionResolver soapFaultAnnotationExceptionResolver = new DetailSoapFaultAnnotationExceptionResolver();
SoapFaultDeFinition faultDeFinition = new SoapFaultDeFinition();
faultDeFinition.setFaultCode(SoapFaultDeFinition.CLIENT);
soapFaultAnnotationExceptionResolver.setDefaultFault(faultDeFinition);
soapFaultAnnotationExceptionResolver.setorder(2);
return soapFaultAnnotationExceptionResolver;
}
如您所见,它的顺序为 2,因为我已经有一个自定义解析器来捕获所有其他异常(而带有注释的这个解析器也没有遇到第一个异常)
我还尝试将此异常添加到第一个自定义解析器中的错误映射中,但我无法仅为此异常设置不同的 faultString
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。