Handling Incomplete Service Signatures Using Wrapper Services
When you use a service as an operation in a web service descriptor, the service signature must accurately and completely reflect the expected service input and output.
If the signature is not accurate or complete, the WSDL document created for the web service descriptor will contain incorrect signature information. Clients generated from the WSDL document may not execute as expected.
However, sometimes it may not be possible to make the service signature complete before using it in a web service descriptor or you may not want to alter the service signature. In these situations, you can expose the service as a web service by creating a wrapper service. The wrapper service needs to declare the complete service signature and invoke the service that you want to expose as a web service. You can then use the wrapper service as an operation in a provider web service descriptor.
For example, suppose that you want to expose an XSLT service as a web service on one Integration Server and invoke it from another. However, the XSLT source contains an optional run-time property that is added to the pipeline at run time. This optional property is not reflected in the input signature of the XSLT service. If you added the XSLT service to a provider web service descriptor, the resulting WSDL document would not list the property as part of the input message. Consequently, a consumer web service descriptor and a web service connector created from the WSDL document would not account for the property and invocation will fail.
To successfully use the XSLT service as a web service, you can do the following:
1. Create a wrapper flow service that:
Defines all of the input parameters of the XSLT service in its input signature.
Defines the run-time property of the XSLT source in its input signature.
Invokes the XSLT service.
2. On the Integration Server that hosts the wrapper flow service and the XSLT service, create a provider web service descriptor from the wrapper flow service.
On the Integration Server from which you will invoke the web service, create a consumer web service descriptor from the WSDL of the provider web service descriptor. The web service connector that corresponds to the operation for the XSLT service will display the complete input signature.