1

我正在将我的 Web 服务发布 API 从 AXIS2 迁移到 CXF。CXF 自动生成的 WSDL 与 Axis2 WSDL 不同。下面给出不同之处。由于客户端位于其他地方,因此我无法测试这些差异是否会影响 Axis2 生成的客户端。如何使用 CXF 消除这些 WSDL 差异?
CXF WSDL

<xs:element name="test" type="tns:test"/> 
<xs:element name="testResponse" type="tns:testResponse"/> 
    <xs:complexType name="test"> 
        <xs:sequence> <xs:element name="doc" type="xs:string" minOccurs="0"/> </xs:sequence> 
    </xs:complexType> 
    <xs:complexType name="testResponse"> 
        <xs:sequence> <xs:element name="return" type="xs:string" minOccurs="0"/> </xs:sequence> 
</xs:complexType>

<wsdl:portType name="TESTService">

Axis2 WSDL

<xsd:element name="test" nillable="true" type="xsd:string" />
<xsd:element name="testResponse" nillable="true" type="xsd:string" />
<wsdl:portType name="TEST">
4

2 回答 2

1

最有可能的是,添加以下注释:

@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)

会做的。您可能还需要更新@WebParam 和@WebReturn 参数的“名称”属性。

于 2012-05-11T14:57:48.637 回答
0

要获得xs:elemntName差异的 rif,请从 Web 服务输入中删除“@WebParams”,因为它只接受一个字符串而不是任何复杂对象。

要删除wsdl:portType名称差异,只需添加 '@WebService(name) 属性。'@WebService' 应该按照规范顺序,否则 cxf 不会在 WSDL 中考虑它们。

于 2012-05-11T16:16:23.743 回答