質問

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>

これがお役に立てば幸いです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top