Apache Camel - 使用空主体接收SOAP响应

时间:2015-10-29 08:53:51

标签: apache web-services soap apache-camel cxf

使用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>

2 个答案:

答案 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.3cxf-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