17.15. 如何从 Camel 丢弃 SOAP 错误
如果您使用 camel-cxf 端点来消耗 SOAP 请求,您可能需要从 camel 上下文抛出 SOAP 失败。
基本上,您可以使用 throwFault DSL 来执行此操作;它适用于 POJO、PAYLOAD 和 MESSAGE 数据格式。
您可以定义 soap 故障,如 CxfCustomizedExceptionTest 所示:
SOAP_FAULT = new SoapFault(EXCEPTION_MESSAGE, SoapFault.FAULT_CODE_CLIENT);
Element detail = SOAP_FAULT.getOrCreateDetail();
Document doc = detail.getOwnerDocument();
Text tn = doc.createTextNode(DETAIL_TEXT);
detail.appendChild(tn);
然后像您一样进行丢弃
from(routerEndpointURI).setFaultBody(constant(SOAP_FAULT));
如果您的 CXF 端点以 MESSAGE 数据格式工作,您可以在消息正文中设置 SOAP 失败消息,并在消息标头中设置响应代码,如 CxfMessageStreamExceptionTest所示
from(routerEndpointURI).process(new Processor() {
public void process(Exchange exchange) throws Exception {
Message out = exchange.getOut();
// Set the message body with the
out.setBody(this.getClass().getResourceAsStream("SoapFaultMessage.xml"));
// Set the response code here
out.setHeader(org.apache.cxf.message.Message.RESPONSE_CODE, new Integer(500));
}
});
同使用 POJO 数据格式。您可以在正文上设置 SOAPFault。