.NETで記述されたSOAP WebサービスのWSDLファイルが指定されています。私はJAX-WS(JBossに付属している実装)を使用してJavaクライアントを構築しています。JAX-WS SOAP要求がWSDLファイルと一致しません
私はwsimport
を実行してクラスを生成しました。これらを使用してサービスを呼び出すことができます。問題は、JAX-WSが.NETとは異なる方法でWSDLファイルを解釈しているように見えることです。
以下は、WSDLファイルの抜粋です。
<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-生成された要求は次のようになります。興味のある要素がminorgroupsという名前です。 <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スニペットの最後の行を編集して、グローバル要素の名前をのminorgroupsに変更して、JAX-WSクライアント要求を修正できます。しかし、XMLスキーマに精通しているわけではないので、グローバル要素がどのような機能を提供しているのか分かりませんが、内部の要素の名前の代わりにJAX-WSがその名前を使用するのが正しいかどうかは分かりません。
JAX-WSは正しく動作するのですか?