我已经使用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
的注释处理器。有任何想法吗?还有其他提示吗?
答案 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
它应该解决问题。