2012-07-27 51 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,因为它是。处理肥皂标题应该在代理服务级别使用中介来完成。