Hi guys.
In our company we have a lot of WebServices (SOAP and Rest) on top of DataPower: several of them are Web Services Proxies implementations, other are on top of MultiProtocol Gateways (MPGW).
Because of our big number of MPGW, we are starting to struggle in the best way to internally route the requests to the specific MPGW. Trying to explain with an example:
- Consider for starters that all of our services are exposed on the internet address www.example.com
- This address is translated to our DataPower to port :443
- This port is assigned with an HTTP Handler that in term is assigned to generic MPGW
- In this generic MPGW we have a huge routing xslt file, that by considering the URI from the request, redirects to a specific MPGW.
- This redirect is based on a internal port (another HTTP Handler) assigned to the specific MPGW
Code example:
<xsl:when test="regexp:match($URI,'^/URI1/test1/V1$','')">
<dp:set-variable name="'var://service/routing-url'" value="'http://127.0.0.1:610/new-URI1/new-test1/V1'"/>
</xsl:when>
<xsl:when test="regexp:match($URI,'^/URI2/test2/V1$','')">
<dp:set-variable name="'var://service/routing-url'" value="'http://127.0.0.1:611/new-URI2/new-test2/V1'"/>
</xsl:when>
<xsl:when test="regexp:match($URI,'^/URI3/test3/V1$','')">
<dp:set-variable name="'var://service/routing-url'" value="'http://127.0.0.1:612/new-URI3/new-test3/V1'"/>
</xsl:when>
Notice the internal ports 610, 611, 612.
You can imagine that is starting to get difficult to manage: handling all the of MPGW, with the necessary HTTP Listeners and constant different internal ports.
Question: is there a better way to do this? We've looked on the possibility to use the "Call processing rule action" in the policy. Will this be a good solution? Any other ways out to there to better govern this?
Thanks in advance
Cheers
------------------------------
Tiago Soares
------------------------------