Invoking external Web Service from SwitchYard

Version 3

    As you can expose SwitchYard services over SOAP/HTTP, you can also invoke SOAP/HTTP based Web Services hosted locally/remotely from within a SwitchYard service. The gateway leverages the JAX-WS 2.0 Dispatch API to acheive this.


    The Deployment Descriptor

    Similar to the export scenario, you need only one parameter to invoke the Web Service over SOAP/HTTP. The bare minimum configuration would be (Component configurations not shown here):

     

    <switchyard xmlns="urn:switchyard-config:switchyard:1.0"
                xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200912"
                xmlns:soap="urn:switchyard-component-soap:config:1.0">
        <sca:composite name="m1app">
            <sca:reference name="OrderServiceConsumer">
                <soap:binding.soap>
                    <soap:wsdl>wsdl/OrderService.wsdl</soap:wsdl>
                </soap:binding.soap>
            </sca:reference>
        </sca:composite>
    ...
    </switchyard>
    
    

     

    A SwitchYard application with this configuration would register the OrderServiceConsumer service that can be invoked over the SwitchYard Bus. This configuration above will make the SOAP gateway component to search for OrderService.wsdl in the deployment's classpath. Similar to the service binding scenario the wsdl property can also be a "file:" or a "http:" url.

     

    Any Message sent to the OrderServiceConsumer will get decomposed into a SOAP Message and sent to the target service specified in the WSDL's soap:address location property. If a response is expected the OrderServiceConsumer will wait for a response from the Web Service and dispatch that message as a SwitchYard Message to the original service. The operation is one-way or request-response is determined from the WSDL automatically.

     

    Care should be taken to ensure that a bundled WSDL has the correct service address, else the send/receive would fail.

     

    Optional Properties

    The various additional properties that can be configured are as follows:

    PropertyDescriptionDefault
    portThe WSDL port defintion to be used. The string can be in the form {namespaceURI}serviceName:portName", with the "{namespaceURI}" and "serviceName:" part being optional.First found port definition
    composerThe fully qualified class name of SwitchYard Message composer.DefaultMessageComposer
    decomposerThe fully qualified class name of SwitchYard Message decomposer.DefaultMessageDecomposer