我有以下路线:
<route>
<from uri="cxf:bean:MyBean" />
<process ref="myProcessor" />
</route>我需要处理SOAP消息,但在每次调用开始时,我必须将原始SOAP消息保存到数据库中(整个信封包含头部和正文)。如您所见,我想在POJO dataFormat中使用cxf。
我找不到任何信息为什么我的原始SOAP消息被修改(整个正文部分被删除,并转换为POJO)。在我的例子中可以得到原始的SOAP消息吗?
谢谢
发布于 2017-06-28 15:47:11
org.apache.cxf.interceptor.LoggingInInterceptor是如何提取原始SOAP内容和属性的一个很好的例子。有关源代码,请参阅github.com。
以下是如何在CXF消息中存储SOAP内容示例(bos是来自LoggingInInterceptor源代码的CachedOutputStream ):
ByteArrayOutputStream baos = new ByteArrayOutputStream();
IOUtils.copy(bos.getInputStream(), baos);
message.getExchange().put("OriginalSoap", baos.toByteArray());下面是如何从org.apache.camel.Exchange检索存储的SOAP内容:
byte[] content = (byte[])exchange.getIn()
.getHeader(CxfConstants.CAMEL_CXF_MESSAGE, org.apache.cxf.message.Message.class)
.getExchange()
.get("OriginalPayload");基于http://camel.465427.n5.nabble.com/Getting-entire-Soap-Message-with-header-and-body-in-Payload-mode-td5753162.html解决方案的内容存储和检索
https://stackoverflow.com/questions/24730561
复制相似问题