Mule ESB - Web服务使用者 - 无法解析WSDL

时间:2015-06-12 03:52:06

标签: mule

我在配置Web服务使用者时遇到了非常基本的问题,我希望有人可以帮助。

我正在使用 Anypoint Studio 2015年3月发布 版本:5.1.2 Build Id:201504301511 在Windows Vista上

我尝试使用的服务的WSDL是

<definitions name="StockQuote" targetNamespace="http://example.com/stockquote.wsdl" xmlns:tns="http://example.com/stockquote.wsdl" xmlns:xsd1="http://example.com/stockquote.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/">
  <types>
    <schema targetNamespace="http://example.com/stockquote.xsd" xmlns="http://www.w3.org/2000/10/XMLSchema">
      <element name="TradePriceRequest">
        <complexType>
          <all>
            <element name="tickerSymbol" type="string"/>
          </all>
        </complexType>
      </element>
      <element name="TradePrice">
        <complexType>
          <all>
            <element name="price" type="float"/>
          </all>
        </complexType>
      </element>
    </schema>
  </types>
  <message name="GetLastTradePriceInput">
    <part name="body" element="xsd1:TradePriceRequest"/>
  </message>
  <message name="GetLastTradePriceOutput">
    <part name="body" element="xsd1:TradePrice"/>
  </message>
  <portType name="StockQuotePortType">
    <operation name="GetLastTradePrice">
      <input message="tns:GetLastTradePriceInput"/>
      <output message="tns:GetLastTradePriceOutput"/>
    </operation>
  </portType>
  <binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="GetLastTradePrice">
      <soap:operation soapAction="http://example.com/GetLastTradePrice"/>
      <input>
        <soap:body use="literal"/>
      </input>
      <output>
        <soap:body use="literal"/>
      </output>
    </operation>
  </binding>
  <service name="StockQuoteService">
    <documentation>My first service</documentation>
    <port name="StockQuotePort" binding="tns:StockQuoteBinding">
      <soap:address location="http://localhost:8080/"/>
    </port>
  </service>
</definitions>

它是来自W3C网站的示例的副本,只修改了肥皂地址。

我遇到的第一个问题是,在成功将WDL文件导入我的mule项目后,我无法使用文件Global Element Property窗口使用文件浏览'按钮'填充WDSL位置文本框。

单击文件浏览按钮会成功列出我的mule项目中的所有* .wsdl文件,但选择其中任何文件都不会填充WSDL位置文本框。

手动输入项目中wsdl的文件路径似乎识别出wsdl。它不再报告缺少wsdl位置属性,它会自动从wsdl(StockQuoteService)中的服务定义填充服务文本框。但是,端口(和地址)下拉列表不会从WSDL条目中填充。

手动输入端口(StockQuotePort)会自动从WSDL填充地址文本框,但它会报告错误“Web服务使用者仅支持带SOAP主体的端口”。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

ws-consumer 也适用于本地WSDL,并且可以在Mac上使用:

Anypoint Studio March 2015 Release
Version: 5.1.1
Build Id: 201504011500

可能是Windows Studio发行版的错误。但是,您也可以切换到XML视图并编辑 ws-consumer-config ,只需从类路径中读取WSDL:

    <ws:consumer-config name="Web_Service_Consumer1"
        wsdlLocation="MyLocalWsdl.wsdl" service="ImportV200606" port="ImportV200606Soap"
        serviceAddress="https://MyLocalService/service.svc?responseTimeout=280000"
        doc:name="Web Service Consumer">
    </ws:consumer-config>