CXF忽略WebParam注释中的头参数

时间:2015-07-24 11:37:05

标签: java web-services soap annotations cxf

我已经使用wsdl2java生成了代码,该代码适用于默认的Java JAX-WS实现。当我添加CXF时,我的应用程序停止工作。我知道这是因为切换JAX-WS实现(Why wsdl2java generated code use CXF dependencies at will?)。

我正在调试失败的具体原因,我发现我的所有参数都是在邮件正文中发送的。这很奇怪,因为它看起来像CXF忽略header = true参数。就像这样:

@WebParam(name = "auth", targetNamespace = "urn:ns", header = true)

为什么会这样?可能是什么原因?

次要问题:

我认为调试注释处理可能对我有所帮助。我已经阅读了一些有关这方面的文章,但我不知道在哪里可以找到@WebParam的注释处理器。有任何想法吗?还有其他提示吗?

2 个答案:

答案 0 :(得分:1)

我们遇到了完全相同的问题。您的CXF端点是如何定义的?显然,您定义了wsdlURL属性,指向wsdl。你应该删除它。

我们是这样的:

<cxf:cxfEndpoint
    id="upsTrackEndpoint"
    address="${ups.service.endpoint.track}"
    wsdlURL="wsdl/Track.wsdl"
    serviceClass="com.ups.wsdl.xoltws.track.v2.TrackPortType">
</cxf:cxfEndpoint>

我们将其改为:

<cxf:cxfEndpoint
    id="upsTrackEndpoint"
    address="${ups.service.endpoint.track}"
    serviceClass="com.ups.wsdl.xoltws.track.v2.TrackPortType">
</cxf:cxfEndpoint>

似乎在定义wsdlURL属性时,header属性被完全忽略。

答案 1 :(得分:0)

删除所有与CXF相关的JAR依赖项,然后使用此处定义的JAR:http://cxf.apache.org/docs/using-cxf-with-maven.html

它应该解决问题。