2008-11-25 78 views
0

我在我的web服務中有一個簡單的public boolean isAlive()服務。 我在WSDL定義它:Axis2 WSDL2Java:在生成的存根中缺少無參數操作

<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,但所有其他方法都帶有「request」arg)。如果我必須輸入一個wsdl:輸入,它會是什麼信息?

編輯:月食下驗證WSDL之後,我有警告WS-I: (BP2208) wsdl:operation was not a request/response or one-way operation搜索,我發現這裏的描述後:http://www.ws-i.org/Testing/Tools/2005/01/BP11_TAD_1-1.htm#BP2208(似乎錨不工作),所以我猜錯誤可能是缺少WSDL:輸入。

回答

1

正如我在編輯中說的那樣,問題是缺少的wsdl:input。通過添加

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

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

然後我原來的問題就解決了......最後,我要尋覓更多的由我自己之前問的SO :(

0

我不知道,如果這是你的問題,但下面的行似乎也沒有關閉標籤:

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

它應該是這樣的:

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

希望這有助於。

+0

這只是一個錯誤在我的複製/粘貼,但原來是正確的...我編輯了問題,以糾正這一問題。 – Vinze 2008-11-25 15:00:41