2015-10-29 60 views
1

使用Apache camel 2.15.3創建SOAP服務,並且一切正常,即使響應SOAP正文也是有效的。Apache Camel - 接收空主體SOAP響應

駱駝2.15.3依賴於CXF 3.0.6

但是,當我CXF核心更新到3.1.3,一切工作正常,但SOAP響應體爲空。

沒有錯誤日誌,服務器正常啓動。

我錯過了一些依賴關係?

的pom.xml

<properties> 
     <log4j.version>1.2.17</log4j.version> 
     <camel.version>2.15.3</camel.version> 
     <spring.version>4.1.6.RELEASE</spring.version> 
     <cxf.version>3.1.3</cxf.version> 
    </properties> 
    <dependencies> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>${log4j.version}</version> 

     </dependency> 
     <!-- Camel dependencies --> 
     <dependency> 
      <groupId>org.apache.camel</groupId> 
      <artifactId>camel-core</artifactId> 
      <version>${camel.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.camel</groupId> 
      <artifactId>camel-cxf</artifactId> 
      <version>${camel.version}</version> 
     </dependency> 

     <!-- Spring dependencies --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <!-- CXF --> 
     <dependency> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-core</artifactId> 
      <version>${cxf.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-rt-frontend-jaxws</artifactId> 
      <version>${cxf.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-rt-frontend-jaxrs</artifactId> 
      <version>${cxf.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-rt-transports-http</artifactId> 
      <version>${cxf.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-rt-rs-service-description</artifactId> 
      <version>${cxf.version}</version> 
     </dependency> 

回答

1

如果我們使用camel-cxf 2.15.3那麼我們就必須cxf-rt-bindings-soap, cxf-rt-features-clustering, cxf-rt-frontend-jaxrs, cxf-rt-frontend-jaxws, cxf-rt-rs-security-oauth (3.0.6)。所有這些cxf-rt-* jars取決於cxf-core 3.0.6。這就是爲什麼使用apache camel 2.15.3cxf-core 3.0.6總是更好。如果你想使用cxf-core to 3.1.3使用駱駝2.16.0(這是最新的)它應該工作,你可以試試看。 FYI:apache camel 2.16.0支持cxf-core to 3.1.2

+0

你的意思是cxf-core 3.1.3與2.15.3完美合作? –

+0

嘗試最新版本的駱駝(2.16) – bakki

2

我遇到了類似的問題,但由於駝峯2.16.x中的錯誤,我必須留在2.15.x.我必須使用cxf 3.1.1+,因爲我必須使用CXF中的TLS增強功能。

在我的情況下,我將我的cxf maven依賴項(cxf-rt-xxxx)提前到pom文件中的camel依賴項。此外,由於camel-cxf將引入cxf-core,因此不需要明確指定它。這種安排對我有用(運行camel 2.15.4和cxf 3.1.3)。