16.15. 如何从 Camel 丢弃 SOAP 失败
如果您使用 camel-cxf
端点来消耗 SOAP 请求,您可能需要从 camel 上下文中抛出 SOAP Fault。
基本上,您可以使用 throwFault
DSL 来执行此操作;它适用于 POJO
、PAYLOAD
和 MESSAGE
数据格式。
您可以按照 CxfCustomizedExceptionTest 定义 soap 错误:
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);
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));
from(routerEndpointURI).setFaultBody(constant(SOAP_FAULT));
如果您的 CXF 端点采用 MESSAGE
数据格式工作,您可以在消息正文中设置 SOAP Fault 消息,并在消息标头中设置响应代码,如 CxfMessageStreamExceptionTest所示
与使用 POJO 数据格式相同。您可以在外部正文上设置 SOAPFault。