我正在将我的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">
答案 0 :(得分:1)
最有可能的是,添加注释:
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
会这样做。您可能还需要更新@WebParam和@WebReturn参数的“name”属性。
答案 1 :(得分:0)
要获得 xs:elemntName 的rif差异,请从Web服务输入中删除“@WebParams”,因为它只接受字符串而不是任何复杂对象。
要删除 wsdl:portType 名称差异,只需添加'@WebService(name)属性。 '@ WebService'应该按照规范顺序,否则cxf将不会在WSDL中考虑它们。