Apache Camel如何将SOAP消息从JMS队列传递到CXF端点

时间:2018-12-03 13:59:11

标签: soap apache-camel cxf

我正在尝试创建一个骆驼路线,该路线将:

  1. 从队列中获取JMS消息,消息主体是SOAP请求。
  2. 将消息发送到cxf端点。
  3. 将响应放入响应队列。

这是我的代码:

npm

端点配置:

private void setupRequestRoute() {

    from("jms:queue:input")

    .setHeader(CxfConstants.OPERATION_NAME, simple("XXXXXX"))
    .setHeader(CxfConstants.OPERATION_NAMESPACE, simple("XXXXXX"))

    .log("Route headers : ${headers}")

    .to("cxf:bean:myEndpoint")
    .to("jms:queue:response")
        .end();
}

在这种情况下,我觉得我误解了骆驼作品的一些基本知识。似乎是肥皂包膜的存在导致了此问题。我以为骆驼将能够获取原始的soap消息并将其转换为cxf端点的正确消息格式。

有人可以向我解释如何将SOAP请求传递给CXF端点吗?

<cxf:cxfEndpoint id="myServiceEndpoint"
                 address="http://localhost:8080/MyService/V2"
                 wsdlURL="schemas/MyService.wsdl"
                 xmlns:c="http://xxxx.xxxx/xxxxxxxx/XXX/MyService/V2">
 <cxf:outFaultInterceptors>
   <ref bean="interceptor.out.soap.fault"/>
 </cxf:outFaultInterceptors>
  <cxf:properties>
      <entry key="schema-validation-enabled" value="true" />
      <entry key="dataFormat" value="PAYLOAD" />
      <entry key="defaultBus" value="true" />
      <entry key="allowStreaming" value="false" />
  </cxf:properties>
</cxf:cxfEndpoint>

1 个答案:

答案 0 :(得分:0)

您指定Grad1718 <- Graduation[,c("WID","GRAD_LEVEL_CODE","GRAD_MAJOR_DESC_1","cipcode")] Grad1718aas <- Grad1718[(Grad1718$'GRAD_LEVEL_CODE'=="AAS"),] aas <- data.frame(table(Grad1718aas$cipcode)) aas$Percent = (aas$Freq / sum(aas$Freq)*100) colnames(aas) <- c("CIP Code", "Count", "Percent") 数据格式,但要根据PAYLOAD处理的docs。您可以将XPath传递到当前交换中,还是需要所有WSE标头?

或者尝试使用其他数据格式之一soap:body(我认为在以后的版本中称为MESSAGE?)或RAW听起来更接近您要实现的数据格式。