当前位置: 首页 > 知识库问答 >
问题:

Camel的CXF组件未捕获到一个异常(Exception.class)

焦宁
2023-03-14

我有一个camel-cxf网络服务。我用来处理CXF的SOAP故障拦截器机制中的所有SOAP故障。这工作得很好。

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

OneException(Exception.class)。收件人(“direct:MyWSExceptionHandler”);

每当抛出自定义异常时,我都希望OneException启动(请记住,我也有一个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层生成的异常离开该层而不被处理。。

提前谢谢。

共有1个答案

施自珍
2023-03-14

Camel的OneException仅在出现异常时触发。SOAP故障表示为错误标志为true的消息。

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

 类似资料:
  • 我目前在我的路由中使用dotry/doCatch块,因此我无法使用全局onException块。 然而,如果驼峰路由中断(由于错误代码或意外/未测试的场景),我希望执行一些业务逻辑。希望这永远不会发生,但我仍然想处理更糟糕的情况。 我不能在全局OneException块中有java.lang.Exception,而且,我不想在每个路由上都添加一个额外的捕获。 在抛出未捕获的异常和中断路由之前,是否

  • 问题内容: 为什么Java中的某些异常未被捕获?这是代码由于没有处理的异常而完全失败。(Java版本1.4)。 我得到一个 但这有效 我懂了 我以为捕获异常会捕获所有异常?如何捕获Java中的所有异常? 问题答案: 因为某些异常不是源自-例如和。 基本上,类型层次结构是: 只能抛出派生类,因此,如果您抓住,那实际上就可以抓住一切。 ,以及任何异常,从获得 其他 比那些源自数作为 检查的异常 -他们

  • 我对Java线程、Runnable等相当陌生。因此,我想知道为什么下面的代码没有捕获异常? 阅读有没有一种方法可以使Runnable的run()引发异常,我收集到: "...如果您的run()方法确实是Thread的目标,则抛出异常是没有意义的,因为它是不可观察的;抛出异常与不抛出异常(无)具有相同的效果。"(@erickson) 我应该检查Runnable.run()方法中的异常。 为什么会这样

  • 为什么Java中的一些异常不被捕获?这是完全失败的代码,有一个未处理的异常。(Java版本1.4)。 我在线程“main”java中得到了一个 但这行得通 我在java中没有发现任何方法错误。lang.NoSuchMethodError: 我以为捕获异常会捕获所有异常?如何捕获java中的所有异常?

  • 找不到指定的模型:User\u model Filename:/opt/lampp/htdocs/ci/system/core/Loader。php 电话号码:348 回溯: 文件:/opt/lampp/htdocs/ci/index。php行:315函数:需要一次 我试图改变名称,但它不工作......这个代码模型

  • 我的用它的作用域启动coroutine 我的只处理一些逻辑,在本例中是某种验证器 然后我的只处理网络层/本地层 以下是我得到的错误日志: 错误直接指向显式的语句。