我是駱駝和CXF的新手。我正在嘗試處理從我的Web服務中拋出的錯誤消息。但是CXF僅將它們作爲Fault異常拋出,因此駱駝路由被中止並且調用錯誤處理程序。CXF SOAP錯誤處理
如何調整Camel或CXF以獲取故障信息,正如CXF自身收到的一樣?
- 有沒有我可以達到這個目標的配置?
- 或者我需要提供一個攔截器來實現這個嗎?
- 或者我是否需要在錯誤處理程序中處理?
我是駱駝和CXF的新手。我正在嘗試處理從我的Web服務中拋出的錯誤消息。但是CXF僅將它們作爲Fault異常拋出,因此駱駝路由被中止並且調用錯誤處理程序。CXF SOAP錯誤處理
如何調整Camel或CXF以獲取故障信息,正如CXF自身收到的一樣?
你可以試試這個:
from("endpoint")
.doTry()
.to("endpoint")
.doCatch()
.process(new Processor(
@Override
public void process(Exchange exchange) throws Exception {
//Get the exception
SoapFault fault = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, SoapFault.class);
//Then you can change the body
}
))
.endDoTry()
.end();
如果你只想對故障做出反應,你可以這樣做:
onException的(Fault.class).handled(真).process(新MyFaltProcessor ())。停止();
這是春季DSL的示例路由。你可以試試這個。如果提供者發生SOAP錯誤,這將非常有效。
<route id="test-route-id">
<from uri="direct:from-route"/>
<doTry>
<log message="Request Payload : ${body}" loggingLevel="INFO" logName="test-route-id"/>
<to uri="direct:cxf-endpoint"/>
<log message="Response Payload : ${body}" loggingLevel="INFO" logName="test-route-id"/>
<doCatch>
<exception>org.apache.cxf.binding.soap.SoapFault</exception>
<to uri="direct:fault-handling-route"/>
</doCatch>
</doTry>
</route>