I would like to create a proxy service that handles any service request as long as a WSDL can be dynamically associated with the request. The WS-Policy attachments of the WSDL mapped to a request should be applied dynamically. It is a bit like the DRY principle implemented by metaprogramming in Grails, RobyOnRails etc. The following conventions would drive the behavior:

wsdl GET request:
-------------------------
http://my.synapse.host/<urn of Service>/?wsdl

Synapse would look-up the wsdl from a registry based on the value of <urn of Service> (e.g. urn:se:test:stock-quote:v1), replace the soap address and then return the wsdl.

SOAP request
-------------------
When the soap request arrives at http://my.synapse.host/<urn of Service>, Synapse would dynamically look up the wsdl using <urn of Service> as key (see above) so that the policies defined by the wsdl could be applied.

A metadata-driven mediation would use the soap Action (or wsa:action) + the value of a customer soap header element as input to a custom registry, which would yield the To-address for the outbound soap request. The outbound soap processing would fetch the WSDL from the To- adress using the ?wsdl convention. The WS-Policy attachments of the target service WSDL would be applied.

The purpose of this scenario is to have a generic Synapse virtual endpoint that can process any soap request on behalf of any service, as long as a wsdl is mapped to the last path element of the request URL and some predefined conventions for metadata is applied.

Is this possible in Synapse? Any pointers to significant capabilities are appreciated.

Thanks,

Johan


Reply via email to