我已經獲得了用.NET編寫的SOAP Web服務的WSDL文件。我使用JAX-WS(JBoss自帶的實現)構建Java客戶端。JAX-WS SOAP請求與WSDL文件不匹配
我運行wsimport
來生成類,並且我可以使用它們調用服務。問題在於JAX-WS似乎與.NET不同地解釋WSDL文件。
這是WSDL文件的摘錄。感興趣的元素都被命名minorgroups:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:complexType name="traffichistoryrequest">
<xs:sequence>
<xs:element name="startmonth" type="xs:string" nillable="true"/>
<xs:element name="endmonth" type="xs:string" nillable="true" minOccurs="0"/>
<xs:element name="minorgroups" type="minorgrouplist" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:element name="traffichistoryrequest" type="traffichistoryrequest" nillable="true"/>
<xs:complexType name="minorgrouplist">
<xs:sequence>
<xs:element name="minorgroupcode" type="xs:string" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:element name="minorgrouplist" type="minorgrouplist" nillable="true"/>
的JAX-WS生成的請求是這樣的。注意<minorgrouplist></minorgrouplist>
:
<ns2:request>
<startmonth>2017-01</startmonth>
<endmonth>2017-12</endmonth>
<minorgrouplist>
<minorgroupcode>group1</minorgroupcode>
<minorgroupcode>group2</minorgroupcode>
</minorgrouplist>
</ns2:request>
.NET服務期待<minorgroups></minorgroups>
代替。如果我使用Visual Studio從此WSDL生成客戶端,那也是我所得到的。
我可以通過編輯WSDL片段的最後一行來修復JAX-WS客戶端請求,將該全局元素重命名爲minorgroups。但是不熟悉XML Schema,我不知道該全局元素的功能是什麼,更不用說JAX-WS是否正確使用它的名稱而不是traffichistoryrequest中的元素名稱。
那麼JAX-WS的行爲是否正確?