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

向客户端返回原始异常,而不是返回CamelExecutionException Apache Camel

燕宏胜
2023-03-14

我在一个基于XML的spring上下文文件中定义了一个骆驼上下文。有一条路由正在由SOAP(XML)web服务客户端bean调用。在调用路由时,它抛出一些异常,客户端接收到骆驼异常,而不是原始异常。

Camel在异常时对客户端的响应如下所示

  <soap:Fault>
     <faultcode>soap:Server</faultcode>
     <faultstring>Exception occurred during execution on the exchange: Exchange[ID-CZC4101XJV-53724-1497351782614-9-2]</faultstring>
  </soap:Fault>

预期响应应该是任何异常的原始异常消息

  <soap:Fault>
     <faultcode>soap:Server</faultcode>
     <faultstring>blah blah blah Number Not valid, I am the original exception</faultstring>
  </soap:Fault>

这是我的骆驼路线定义

    <route>
        <from uri="direct:remove" />
        <to uri="bean:removeBean?method=validationNubmer" />
        <to uri="bean:removeBean?method=checkBusiness" />
        <to uri="bean:removeBean?method=triggerRemove" />
    </route>
public void removeMe(String id) {
    RemoveRequest request = new RemoveRequest();
    request.setId(id);
    producer.requestBody("direct:remove", request);
}

我尝试使用camel onException但没有成功:(

    <onException>
        <exception>java.lang.Exception</exception>
        <redeliveryPolicy maximumRedeliveries="0" />
        <handled>
            <constant>true</constant>
        </handled>
        <transform>
            <simple>Error Occurred: ${exception.message}</simple>
        </transform>
    </onException>

共有1个答案

鲜于河
2023-03-14

您可以打开handlefault来允许异常自动转换为SOAP错误。参见Camel in Action 2 book,第11章,其中有一个小示例:https://github.com/camelinaction/camelinaction2/tree/master/chapter11/errorhandler#1136---处理-故障

或者您需要使用 而不是 来告诉Camel您正在将消息体设置为SOAP错误。

 类似资料:
  • 我试图让2支球队互相比赛。当我说团队1.玩(团队2)时,我称之为;当 i 生成的数字小于 0.5 时,team2 应获胜,如果大于 0.5,则团队 1 应获胜。当团队 1 获胜时,它会正确显示为尼克斯,但当团队 2 获胜时,它会显示内存地址。我怎么能让它正确地说网是赢的,而不是team@78987neu73

  • 我正在使用org。springiframework。网状物客户RestTemplate用于一些Java测试,以编写一些新代码的单元测试。我预计这些调用会失败(我正在测试身份验证) 调用不是返回预期的401代码,甚至不是500代码,而是抛出异常。 电话是这样的: 我怀疑我错过了一些非常明显的东西,但我不知道它是什么。这难道不应该简单地返回一个状态代码=401的实体响应吗?

  • 环境 期望的行为 我想更新文档并返回原始文档。 实际行为 正在返回更新的文档,而不是原始文档。 我试过的 起初,我在查看findAndModify: http://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#findAndModify 然而,那里的文档表示它已被弃用,并使用findOneAndUpdate、findOn

  • 我与Laravel有一个项目,负责管理endpoint调用,并通过Vue控制前端。 当用户登录时,响应(令牌)保存在本地存储中,然后在app.js我将此令牌自动添加到所有调用中。 登录 应用程序。js 现在,我们将看到问题。 当我们转到第二页时,将自动启动endpoint调用以填充一些输入。此调用理论上具有本地存储令牌。 路由(APIendpoint) 头部控制器 这将返回拒绝访问。令牌在标头中被

  • 问题内容: 我发现以下行为至少 很奇怪 : 在子句中使用时,该异常消失。那是个错误吗?那在任何地方都有记录吗? 但是真正的问题(我将标记为正确的答案)是: python开发人员允许这种奇怪行为的原因是什么? 问题答案: 您询问了有关Python开发人员的推理。我不能为他们说话,但是没有其他行为可以理解。函数可以返回值,也可以引发异常。它不能同时做到。“最终”子句的目的是提供“保证”运行的清除代码,

  • 如何捕获<code>reactor.netty.http.client。使用。WebClient来检索和无限? 为了重现这个问题,我创建了两个简单的Spring Boot应用程序。两者都基于。 服务器代码是: 客户代码是: 点击<code>http://localhost:9000/stop在web浏览器中,客户端被终止,并且此错误出现在客户端的控制台上。 我希望能够捕获该错误,以便我可以恢复。(