带有POJO dataFormat的Apache camel-cxf

时间:2014-07-14 06:22:53

标签: cxf apache-camel

我有以下路线:

<route>
  <from uri="cxf:bean:MyBean" />
  <process ref="myProcessor" />
</route>

我需要处理SOAP消息但是在每次调用的开始时我必须将原始SOAP消息保存到数据库中(包含头和主体的整个信封)。 如您所见,我想在POJO dataFormat中使用cxf。

我无法找到原始SOAP消息被修改的原因(删除了整体部分,转换为POJO)。在我的案例中是否可以获得原始的SOAP消息?

由于

1 个答案:

答案 0 :(得分:0)

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

的解决方案存储和检索内容