Software AG Products 10.7 | Using CentraSite | Runtime Governance | Virtual Service Asset Management | Important Considerations when Configuring Virtual Services
 
Important Considerations when Configuring Virtual Services
 
Workaround Option 1
Workaround Option 2
Handling Services with Multiple Ports and Bindings
Mediator implicitly assumes that there is a one-to-one mapping between a WSDL Service and a Virtual Service. A problem arises if a <service> element contains multiple <port> elements that point to different bindings (and consequently different port types) -- the problem is that Mediator creates a Virtual Service that has the operations from only one of the portTypes. Mediator chooses the first port available under <service> and exposes the operations corresponding to the equivalent binding/portType.
For example, consider the following WSDL fragment that shows the structure of the portType, binding and service elements in the WSDL. Note that there are:
*Two distinct <portType> elements: SystemPortType and CustomerPortType.
*Two equivalent bindings defined for each <portType>: SystemBinding and CustomerBinding.
*A single <service> element that defines the two ports with distinct endpoints (one for each binding available).
Example <portType> Elements
<portType name="SystemPortType">
<operation name="ping">

</operation>
</portType>
<portType name="CustomerPortType">
<operation name="getOperation1">

</operation>
<operation name="getOperation2">

</operation>
<operation name="getOperation3">

</operation>
<operation name="getOperation4">

</operation>
</portType>
Example <binding> Elements
<binding name="SystemBinding" type="tns:SystemPortType">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="ping">

</operation>
</binding>
<binding name="CustomerBinding" type="tns:CustomerPortType">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getOperation1">

</operation>
<operation name="getOperation2">

</operation>
<operation name="getOperation3">

</operation>
<operation name="getOperation4">
<soap:operation soapAction="urn:customer.service.cm.be/getOperation4"/>

</operation>
</binding>
Example <service> Element
<service name="CustomerRefService">
<port name="SystemPort" binding="tns:SystemBinding">
<soap:address location="http://.../v4/SystemPort"/>
</port>
<port name="CustomerPort" binding="tns:CustomerBinding">
<soap:address location="http://.../v4/CustomerRefPort"/>
</port>
</service>