有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Axis2 WSDL2Java:生成的存根中缺少noarg操作

我的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,但是其他所有带有“request”参数的方法都生成得很好)?如果我必须输入一个wsdl:input,它的消息是什么

编辑:在Eclipse下验证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:input


共 (2) 个答案

  1. # 1 楼答案

    正如我在编辑中所说的,问题在于缺少wsdl:input。加入

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

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

    然后我原来的问题就解决了。。。结论,我应该在问之前自己搜索更多,所以:(

  2. # 2 楼答案

    我不确定这是否是您的问题,但以下行似乎没有结束标记:

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

    应该是这样的:

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

    希望这有帮助