2012-07-27 50 views
0

在我的場景中,有一個在WSO2-AS中運行的webservice「SolverDummyWS」,並且想要在WSO2 ESB內爲此服務生成一個代理。基於帶有強制頭部的WSDL創建WSO2代理

因此,我手動爲代理創建了一個wsdl,並添加了一些強制性標題字段。所以只有代理的wsdl應該有這個頭文件。標題應該全部是強制性的並且被定義爲als顯式標題。

代理WSDL看起來是這樣的:

<wsdl:definitions name="SolverDummyProxy" 
targetNamespace="http://de.unistuttgart.iaas" xmlns:tns="http://de.unistuttgart.iaas" 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> 

<wsdl:types> 
    <schema targetNamespace="http://de.unistuttgart.iaas" 
     xmlns="http://www.w3.org/2001/XMLSchema"> 
     <element name="createGrid"> 
      <complexType> 
       <sequence> 
        <element minOccurs="0" name="milliseconds" type="long" /> 
       </sequence> 
      </complexType> 
     </element> 
     <element name="createGridResponse"> 
      <complexType> 
       <sequence> 
        <element minOccurs="0" name="return" type="string" /> 
       </sequence> 
      </complexType> 
     </element> 
     <element name="requestHeader"> 
      <complexType> 
       <sequence> 
        <element minOccurs="1" name="simulationId" type="long" /> 
        <element minOccurs="1" name="activityId" type="long" /> 
        <element minOccurs="1" name="requiredPolicy" type="anyType" /> 
        <element minOccurs="1" name="requiredPortType" type="string" /> 
        <element minOccurs="1" name="requiredScope" type="anyURI" /> 
       </sequence> 
      </complexType> 
     </element> 
    </schema> 
</wsdl:types> 

<wsdl:message name="createGridRequest"> 
    <wsdl:part name="body" element="tns:createGrid" /> 
    <wsdl:part name="reqHeader" element="tns:requestHeader" /> 
</wsdl:message> 

<wsdl:message name="createGridResponse"> 
    <wsdl:part name="body" element="tns:createGridResponse" /> 
</wsdl:message> 

<wsdl:portType name="SolverDummyProxyWSPortType"> 
    <wsdl:operation name="createGrid"> 
     <wsdl:input message="tns:createGridRequest" /> 
     <wsdl:output message="tns:createGridResponse" /> 
    </wsdl:operation> 
</wsdl:portType> 

<wsdl:binding name="SolverDummyProxyWSSoap11Binding" type="tns:SolverDummyProxyWSPortType"> 
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> 
    <wsdl:operation name="createGrid"> 
     <wsdl:input> 
      <soap:body parts="body" use="literal" /> 
      <soap:header message="tns:createGridRequest" part="reqHeader" 
       use="literal" /> 
     </wsdl:input> 
     <wsdl:output> 
      <soap:body parts="body" use="literal"/> 
     </wsdl:output> 
    </wsdl:operation> 
</wsdl:binding> 

<wsdl:binding name="SolverDummyProxyWSSoap12Binding" type="tns:SolverDummyProxyWSPortType"> 
    <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> 
    <wsdl:operation name="createGrid"> 
     <wsdl:input> 
      <soap12:body parts="body" use="literal" /> 
      <soap12:header message="tns:createGridRequest" part="reqHeader" 
       use="literal" /> 
     </wsdl:input> 
     <wsdl:output> 
      <soap12:body parts="body" use="literal"/> 
     </wsdl:output> 
    </wsdl:operation> 
</wsdl:binding> 

<wsdl:service name="SolverDummyProxyWS"> 
    <wsdl:port name="SolverDummyProxyWSSoap11Endpoint" binding="tns:SolverDummyProxyWSSoap11Binding"> 
     <soap:address location="http://localhost:8280/services/SolverDummyProxyWS.SolverDummyProxyWSSoap11Endpoint" /> 
    </wsdl:port> 
    <wsdl:port name="SolverDummyProxyWSSoap12Endpoint" binding="tns:SolverDummyProxyWSSoap12Binding"> 
     <soap12:address location="http://localhost:8280/services/SolverDummyProxyWS.SolverDummyProxyWSSoap12Endpoint" /> 
    </wsdl:port> 
</wsdl:service> 
</wsdl:definitions> 

所以我使用WSO2 ESB的Webinterface創建一個代理。如果我查看創建的代理的實際WSDL,我看到WSO2-ESB做了一些更改: - 已添加的HTTP綁定 - 從createGridRequest消息中刪除頭部部分 - 混亂的soap:綁定中的輸入(有兩個頭定義,和主體部分被去除)由WSO2-ESB

<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:tns="http://de.unistuttgart.iaas" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://de.unistuttgart.iaas"> 
<wsdl:types> 
    <schema xmlns="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://de.unistuttgart.iaas"> 
     <element name="createGrid"> 
      <complexType> 
       <sequence> 
        <element minOccurs="0" name="milliseconds" type="long" /> 
       </sequence> 
      </complexType> 
     </element> 
     <element name="createGridResponse"> 
      <complexType> 
       <sequence> 
        <element minOccurs="0" name="return" type="string" /> 
       </sequence> 
      </complexType> 
     </element> 
     <element name="requestHeader"> 
      <complexType> 
       <sequence> 
        <element name="simulationId" type="long" /> 
        <element name="activityId" type="long" /> 
        <element name="requiredPolicy" type="anyType" /> 
        <element name="requiredPortType" type="string" /> 
        <element name="requiredScope" type="anyURI" /> 
       </sequence> 
      </complexType> 
     </element> 
    </schema> 
</wsdl:types> 
<wsdl:message name="createGridRequest"> 
    <wsdl:part name="body" element="tns:createGrid" /> 
</wsdl:message> 
<wsdl:message name="createGridResponse"> 
    <wsdl:part name="body" element="tns:createGridResponse" /> 
</wsdl:message> 
<wsdl:portType name="SolverDummyProxyHWSPortType"> 
    <wsdl:operation name="createGrid"> 
     <wsdl:input message="tns:createGridRequest" wsaw:Action="http://de.unistuttgart.iaas/SolverDummyProxyWSPortType/createGridRequest" /> 
     <wsdl:output message="tns:createGridResponse" wsaw:Action="http://de.unistuttgart.iaas/SolverDummyProxyWSPortType/createGridResponse" /> 
    </wsdl:operation> 
</wsdl:portType> 
<wsdl:binding name="SolverDummyProxyHWSSoap11Binding" type="tns:SolverDummyProxyHWSPortType"> 
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> 
    <wsdl:operation name="createGrid"> 
     <soap:operation soapAction="" style="document" /> 
     <wsdl:input> 
      <soap:body use="literal" /> 
      <soap12:header use="literal" part="reqHeader" message="tns:createGridRequest" /> 
      <soap12:header use="literal" part="reqHeader" message="tns:createGridRequest" /> 
     </wsdl:input> 
     <wsdl:output> 
      <soap:body use="literal" /> 
     </wsdl:output> 
    </wsdl:operation> 
</wsdl:binding> 
<wsdl:binding name="SolverDummyProxyHWSSoap12Binding" type="tns:SolverDummyProxyHWSPortType"> 
    <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> 
    <wsdl:operation name="createGrid"> 
     <soap12:operation soapAction="" style="document" /> 
     <wsdl:input> 
      <soap12:body use="literal" /> 
      <soap12:header use="literal" part="reqHeader" message="tns:createGridRequest" /> 
      <soap12:header use="literal" part="reqHeader" message="tns:createGridRequest" /> 
     </wsdl:input> 
     <wsdl:output> 
      <soap12:body use="literal" /> 
     </wsdl:output> 
    </wsdl:operation> 
</wsdl:binding> 
<wsdl:binding name="SolverDummyProxyHWSHttpBinding" type="tns:SolverDummyProxyHWSPortType"> 
    <http:binding verb="POST" /> 
    <wsdl:operation name="createGrid"> 
     <http:operation location="createGrid" /> 
     <wsdl:input> 
      <mime:content type="text/xml" part="parameters" /> 
     </wsdl:input> 
     <wsdl:output> 
      <mime:content type="text/xml" part="parameters" /> 
     </wsdl:output> 
    </wsdl:operation> 
</wsdl:binding> 
<wsdl:service name="SolverDummyProxyHWS"> 
    <wsdl:port name="SolverDummyProxyHWSHttpSoap11Endpoint" binding="tns:SolverDummyProxyHWSSoap11Binding"> 
     <soap:address location="http://Tobiass-MacBook-Pro.local:8280/services/SolverDummyProxyHWS.SolverDummyProxyHWSHttpSoap11Endpoint" /> 
    </wsdl:port> 
    <wsdl:port name="SolverDummyProxyHWSHttpsSoap11Endpoint" binding="tns:SolverDummyProxyHWSSoap11Binding"> 
     <soap:address location="https://Tobiass-MacBook-Pro.local:8243/services/SolverDummyProxyHWS.SolverDummyProxyHWSHttpsSoap11Endpoint" /> 
    </wsdl:port> 
    <wsdl:port name="SolverDummyProxyHWSHttpSoap12Endpoint" binding="tns:SolverDummyProxyHWSSoap12Binding"> 
     <soap12:address location="http://Tobiass-MacBook-Pro.local:8280/services/SolverDummyProxyHWS.SolverDummyProxyHWSHttpSoap12Endpoint" /> 
    </wsdl:port> 
    <wsdl:port name="SolverDummyProxyHWSHttpsSoap12Endpoint" binding="tns:SolverDummyProxyHWSSoap12Binding"> 
     <soap12:address location="https://Tobiass-MacBook-Pro.local:8243/services/SolverDummyProxyHWS.SolverDummyProxyHWSHttpsSoap12Endpoint" /> 
    </wsdl:port> 
    <wsdl:port name="SolverDummyProxyHWSHttpsEndpoint" binding="tns:SolverDummyProxyHWSHttpBinding"> 
     <http:address location="https://Tobiass-MacBook-Pro.local:8243/services/SolverDummyProxyHWS.SolverDummyProxyHWSHttpsEndpoint" /> 
    </wsdl:port> 
    <wsdl:port name="SolverDummyProxyHWSHttpEndpoint" binding="tns:SolverDummyProxyHWSHttpBinding"> 
     <http:address location="http://Tobiass-MacBook-Pro.local:8280/services/SolverDummyProxyHWS.SolverDummyProxyHWSHttpEndpoint" /> 
    </wsdl:port> 
</wsdl:service> 
</wsdl:definitions> 

WSDL改性該代碼不具有強制性的報頭,所以我的創建初始報頭的最初目的是通過wso2-弄亂ESB。

有人可以告訴我如何將強制頭添加到代理服務(如果我的初始wsdl文件有錯誤,情況會如此)?

如果我最初的wsdl文件沒問題,我該如何強制wso2-esb使用這個文件,並且不要修改它?

最後一個問題,是否有另一種創建強制頭的方法,用於請求代理?

感謝您的回答!

回答

1

<參數名稱=「useOriginalwsdl」 >真< /參數>

嘗試把這個參數來代理的服務,以顯示WSDL,因爲它是。處理肥皂標題應該在代理服務級別使用中介來完成。