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