Axis2 WSDL2Java:生成されたスタブに引数なしの操作がありません
-
11-07-2019 - |
質問
Webサービスには、単純な public boolean isAlive()
サービスがあります。
WSDLで定義しました:
<wsdl:types>
<xsd:element name="isAliveResponse" type="xsd:boolean">
</xsd:element>
</wsdl:types>
<wsdl:message name="isAliveResponse">
<wsdl:part element="ns:isAliveResponse" name="parameters"/>
</wsdl:message>
<wsdl:portType name="myService">
<wsdl:operation name="isAlive">
<wsdl:output message="ns:isAliveResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="myServiceSOAP" type="ns:myService">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="isAlive">
<soap:operation soapAction="http://myServiceURL/isAlive" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
Serviceスケルトンを生成すると、メソッドが生成されますが、クライアントスタブでは生成されません。 WSDLに問題はありますか?メソッドに引数がない場合でもwsdl:inputを配置する必要があります(WSDL全体を配置しませんでしたが、&quot; request&quot;引数を持つ他のすべてのメソッドは適切に生成されます)?そして、wsdl:inputを配置する必要がある場合、それはメッセージになりますか?
編集:EclipseでWSDLを検証した後、警告 WS-I:(BP2208)wsdl:operation was not request / response or one-way operation
検索後、ここで説明を見つけました: http: //www.ws-i.org/Testing/Tools/2005/01/BP11_TAD_1-1.htm#BP2208 (アンカーが機能していないようです)ので、おそらくエラーはwsdlの欠落だと思います:入力。
解決
私の編集で述べたように、問題はwsdl:inputの欠落でした。追加することで
<wsdl:input message="ns:isAliveRequest" />
and
<wsdl:message name="isAliveRequest"></wsdl:message>
その後、元の問題は解決されました...結論として、SO:(
他のヒント
これがあなたの問題かどうかわかりませんが、次の行には終了タグがないようです:
<wsdl:types>
<xsd:element name="isAliveResponse" type="xsd:boolean">
</wsdl:types>
次のようになります:
<wsdl:types>
<xsd:element name="isAliveResponse" type="xsd:boolean"/>
</wsdl:types>
これがお役に立てば幸いです。
所属していません StackOverflow