gpt4 book ai didi

java - Camel CXF客户端 SOAP 故障处理

转载 作者:行者123 更新时间:2023-12-02 06:49:23 24 4
gpt4 key购买 nike

我正在使用camel和cxf组件从网络服务获取一些数据。在某些情况下,网络服务返回标准的soap:fault。我有接下来的步骤:

<camel:route id="someId">
<camel:onException useOriginalMessage="false">
<camel:exception>java.lang.Exception</camel:exception>
<camel:handled>
<camel:constant>false</camel:constant>
</camel:handled>
<camel:process ref="defaultNaoIntegrationErrorHandler" />
<camel:to uri="ref:naointegration.checkAvailability.jms.error.queue" />
</camel:onException>
<camel:from uri="direct:naoCheckAvailabilityOut" />
<camel:marshal ref="soapjaxbSAP" />
<camel:to id="naoCheckAvailabilityEndpoint" uri="cxf:bean:naoCheckAvailabilityEndpoint" />
<camel:unmarshal ref="soapjaxbSAP" />
</camel:route>

其中 naoCheckAvailabilityEndpoint 是:

<cxf:cxfEndpoint id="naoCheckAvailabilityEndpoint"
address="${naointegration.I011.CheckAvailability.soap.address}"
endpointName="s:checkAvailabilityEndpoint" serviceName="s:SOAPService"
xmlns:s="http://www.example.com/test">
<cxf:properties>
<entry key="dataFormat" value="MESSAGE" />
<entry key="setDefaultBus" value="true" />
</cxf:properties>
<cxf:outInterceptors>
<ref bean="logOutbound" />
</cxf:outInterceptors>

<cxf:inFaultInterceptors>
<ref bean="logOutbound" />
</cxf:inFaultInterceptors>
</cxf:cxfEndpoint>

如果我收到正常的 SOAP 消息,一切正常。当我得到soap foalt/http 500时,我只有字符串消息,其中包含带有soap错误的soap消息(xml)。

阅读cxf和camel邮件列表中类似的问题,我理解如果存在soap foalt,cxf端点应该抛出异常,类型为org.apache.cxf.binding.soap.SoapFault的异常,但我无法得到它。目标是onException子句处理soap错误异常。

有什么建议吗?

最佳答案

您使用的是MESSAGE数据格式,这意味着camel-cxf端点只是从传输中传递流,它不会读取底层消息,因此camel-cxf端点无法区分哪个消息是正常的soap消息或 SOAP 故障消息。

如果想让camel路由处理soap故障,需要使用PAYLOAD或POJO数据格式。

关于java - Camel CXF客户端 SOAP 故障处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18235445/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com