从Axis2迁移到CXF时删除WSDL差异

时间:2012-05-11 14:36:31

标签: web-services soap wsdl cxf axis2

我正在将我的webservice发布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">

2 个答案:

答案 0 :(得分:1)

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

@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)

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

答案 1 :(得分:0)

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

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