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

骆驼Spring-ws:处理异常

夹谷英奕
2023-03-14

在camel spring ws中,有没有办法将自定义主体(例如自定义bean)和http状态返回为500?

我试过了

onException(RuntimeException.class).handled(true).process(new
     ExceptionProcessor()).marshal(jaxb);

然后在processor公共类ExceptionProcessor实现processor{

@Override
public void process(Exchange exchange) throws Exception {
    RuntimeException e = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, RuntimeException.class);

    ExceptionHandler handler = ExceptionHandlerFactory.fromException(e);
    ExceptionType response = handler.handleException();


    if (exchange.hasOut()) {
        exchange.getOut().setBody(response);
    } else {
        exchange.getIn().getHeaders();
        exchange.getIn().setFault(true);
        exchange.getIn().setBody(response);
    }

}

}

但是即使身体是我想要的,超文本传输协议状态总是200。
你能帮我吗?

更多信息:我正在使用camel 2.20.2版

共有1个答案

尹承泽
2023-03-14
exchange.setProperty(Exchange.HTTP_RESPONSE_CODE, 500);
exchange.getOut().setFault(true);

应该对你有用。

 类似资料:
  • 我正在尝试从目录中选取一个文件,拆分一个文件,并将每一个拆分行添加到ActiveMQ中。我在这个过程中遇到了异常处理的问题。假设目录中的文件是一个二进制文件(可执行文件),那么splitter会显示org.apache.camel.runtimeCamelException和java.nio.charset.MalFormedInputException异常。如果出现这种情况,那么我需要捕获这些异

  • 我有一个队列系统,骆驼只是其中的一小部分。在此队列系统中,对于某些队列,代理在队列已满时返回 FAIL。为了解决这个问题,我查看我得到的 JMS 异常,从消息中我可以看到原因是否是队列已满。 我想在Camel中实现的是,对于满队列的特定情况,我希望重试传递,而对于任何其他JMS异常(或任何其他异常),我希望将其发送到DLQ。 我假设我必须使用onException(JMSException.cla

  • 我有3个单独运行的Spring Boot-Camel应用程序。我需要链接这些进程,例如在进程A完成后,它应该启动进程B,然后一旦进程B完成,它应该继续进程C。如果中间有任何进程失败,进程链应该重试失败的进程,并继续执行到下一个。此外,在进程A中,如果路由中的任何步骤有任何失败,那么我也需要重试并从中间步骤开始。有人能帮我实现这个场景吗?

  • 我试图使用Kerberos从ActiveMQ-Camel桥向Kafka (Cloudera)发送消息。 ActiveMQ v5.15.4 骆驼:2.21.1 Kafka客户端:1.1.0 服务器版本:Apache/2.4.6(CentOS) 骆驼.xml剪刀是: 这是日志中的kafka客户端配置: 日志级别:调试 Jaas文件: 出口: 当我发送消息时,我在调试级别收到以下日志,但消息未被发送:

  • 如何使用Apache Camel调用带有空消息体的SOAP Web服务? 例如,路由上的最后一个endpoint将是调用我的代理上采用 0 个参数的方法。 编辑: xml配置示例: 问题是 WS 上的方法“invoke”需要 0 个参数,并且会抛出一个异常,指出正在接收 1 个参数。有没有办法让我指定忽略此收到的输入?

  • 无法弄清楚这是怎么回事-试图设置一个路由,只看到cxf连接到soap web服务(我不关心实际数据,也不期望数据实际“工作”,但它不断引发一个我不理解的异常: 我想知道我是否正确配置了它。我想这可能是一个丢失的jar,但当我尝试引入其他jar时,导致了依赖冲突 我正在使用maven依赖项“camel-cxf”来加载我所有的jar配置 “原因:org.apache.cxf.bus.extension