0

私は自分の 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>

サービス スケルトンを生成すると、メソッドは生成されますが、クライアント スタブには生成されません。WSDL に問題はありますか? メソッドに引数がなくても wsdl:input を配置する必要がありますか (WSDL 全体を配置しませんでしたが、「リクエスト」引数を持つ他のすべてのメソッドは適切に生成されます)。wsdl:input を入力する必要がある場合、そのメッセージは何でしょうか?

編集: EclipseでWSDL を検証した WS-I: (BP2208) wsdl:operation was not a request/response or one-way operation後、検索後に警告が表示されました。アンカーは機能しません) したがって、エラーはおそらく wsdl:input の欠落であると思います。

4

2 に答える 2

1

私の編集で述べたように、問題は wsdl:input の欠落でした。追加することで

<wsdl:input message="ns:isAliveRequest" />

<wsdl:message name="isAliveRequest"></wsdl:message>

その後、私の元の問題は解決されました...結論、SOで質​​問する前に自分でもっと検索する必要がありました:(

于 2008-11-25T15:26:19.327 に答える
0

これがあなたの問題かどうかはわかりませんが、次の行には終了タグがないようです:

<wsdl:types>
    <xsd:element name="isAliveResponse" type="xsd:boolean">
</wsdl:types>

次のようになります。

<wsdl:types>
    <xsd:element name="isAliveResponse" type="xsd:boolean"/>
</wsdl:types>

お役に立てれば。

于 2008-11-25T14:16:06.707 に答える