我已经使用 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
的注释处理器。有任何想法吗?还有其他提示吗?
最佳答案
我们遇到了完全相同的问题。您的 CXF 端点是如何定义的?显然,您定义了一个指向 wsdl.xml 的 wsdlURL
属性。您应该删除它。
我们的情况是这样的:
<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
属性被完全忽略。
关于java - CXF 忽略 WebParam 注释中的 header 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31609582/