首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将spring boot web服务抛出的异常映射到复杂的故障信息?

如何将spring boot web服务抛出的异常映射到复杂的故障信息?
EN

Stack Overflow用户
提问于 2019-06-28 17:32:42
回答 1查看 1.2K关注 0票数 0

我使用Spring Boot为现有的WSDL实现了一个服务提供者。WSDL指定了带有附加故障消息的服务。对应的故障信息有一些细节,包括时间戳、导致异常的类及其堆栈跟踪以及原始请求中包含的信息。所有细节都定义为XML元素本身。

当服务在服务器上执行时,这些信息在运行时可用。如果发生错误,则会抛出相应的异常,其中包含这些信息。

使用spring boot,可以配置一个org.springframework.ws.server.EndpointExceptionResolver实例来将异常映射到错误信息。然而,在它的所有实现类中,似乎只能添加一个故障信息消息和一个故障代码。我没有找到添加结构化对象或更好的方法:为其定义JAXB序列化的对象。

这怎麽可能?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-28 17:56:35

当然,这不是问题。

一种方法是创建一个将异常映射到错误的自定义SoapFaultMappingExceptionResolver:

代码语言:javascript
复制
public class DetailSoapFaultDefinitionExceptionResolver extends SoapFaultMappingExceptionResolver {

    private static final QName CODE = new QName("code");
    private static final QName DESCRIPTION = new QName("description");

    @Override
    protected void customizeFault(Object endpoint, Exception ex, SoapFault fault) {
        logger.warn("Exception processed ", ex);
        if (ex instanceof ServiceFaultException) {
            ServiceFault serviceFault = ((ServiceFaultException) ex).getServiceFault();
            SoapFaultDetail detail = fault.addFaultDetail();
            detail.addFaultDetailElement(CODE).addText(serviceFault.getCode());
            detail.addFaultDetailElement(DESCRIPTION).addText(serviceFault.getDescription());
        }
    }

}

请在此处找到完整的示例:

https://memorynotfound.com/spring-ws-add-detail-soapfault-exception-handling/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56804407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档