骆驼的 CXF 组件未捕获异常(异常.class)



我有一个camel-cxf webservice。我用来处理CXF的SOAP故障拦截器机制中的所有SOAP故障。

我认为最好在同一层处理骆驼层抛出的异常,并编写了一个简单的onException场景,如下所述:

onException (Exception.class)。("直接:MyWSExceptionHandler");

每当一个自定义异常被抛出时,我期望onException会启动(记住我也有一个SOAP故障拦截器),但它没有。CXF正在接管,消息将通过拦截器,而不是骆驼路由。

这是预期的方式,还是我做错了什么?

我的CXF故障拦截器是这样的:

@Component("SOAPFaultInterceptor")
public class SOAPFaultInterceptor extends AbstractPhaseInterceptor {
    public SOAPFaultInterceptor() {
        super(Phase.MARSHAL);
    }
    public void handleMessage(Message message) throws Fault {
     // The message is coming here directly, instead of going to the route defined by onException.
    }
}

有人能告诉如何解决这个问题吗?我不希望在Camel层生成的Exception在没有处理的情况下离开该层。

Camel的onException只在出现异常时触发。SOAP错误表示为带有错误标志= true的消息。

您可以做的是在CamelContext上设置handleFault=true,然后它将SOAP错误消息转换为onException可以响应的异常。

相关内容

  • 没有找到相关文章