使用Apache camel 2.15.3创建SOAP服务,一切正常,即使响应SOAP主体有效。
Camel 2.15.3依赖于cxf 3.0.6
但是当我将cxf-core更新到3.1.3时,一切正常,但SOAP响应主体是EMPTY。
没有错误日志,服务器正常启动。
我错过了一些依赖项?
的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>
答案 0 :(得分:2)
我遇到了类似的问题,但由于Camel 2.16.x中的一个错误,我必须继续使用2.15.x.我也必须使用cxf 3.1.1+,因为我必须使用CXF中的TLS增强功能。
在我的例子中,我将pxf maven依赖项(cxf-rt-xxxx)移到了pom文件中的camel依赖项之前。此外,由于camel-cxf将引入cxf-core,因此无需明确指定它。这种安排对我有用(运行camel 2.15.4和cxf 3.1.3)。
答案 1 :(得分: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.3
与cxf-core 3.0.6
一起使用总是更好的原因。如果你想使用cxf-core to 3.1.3
使用camel 2.16.0(这是最新的)它应该可以尝试。仅供参考:apache camel 2.16.0
支持cxf-core to 3.1.2