Hi Hubert
So we need to find a way to run services in different versions in
parallel. The client shall get connected to the proper version of the
service (e.g. pre-production or production or some other version based
on a central configuration. How would you tackle this problem with the help of WSO2? What solutions
do you see?
For example if you have a LoanService_v1 and a LoanService_v2 hosted somewhere, and the ESB sits between these and the actual service consumers / clients, you would define a Proxy service say LoanService which would accept requests for both versions and route them as necessary looking at the request version. This may be done by a switch statement that looks at the namespace etc.

Another way would be to create a proxy service LoanProxy_v1 that routes directly to LoanService_v1. Now after sometime, when you want to bring in the v2 of the service, some of your clients may want to switch to the new service since they want to use new operations etc.. but there may be some that does not want to change or cannot change. If your IT admin folks now want to retire v1 service and replace it with the v2 version only, you can create a LoanProxy_v2 that routes to LoanService_v2 directly, and edit the LoanProxy_v1 to transform the request from the v1 schema to the v2 schema and then forward to the LoanService_v2 endpoint. Once all clients migrate to v2, you can retire the v1 proxy.
I configured a simple proxy service which evaluates a version-information 
included in the SOAP-header via an XPATH-Expression
using a Switch Mediator for incoming messages. For each case I used a send mediator which makes a lookup of a defined (version-dependent) endpoint. This works, but I'm not sure, whether there are more elegant solutions to that problem.
If you are using the first suggestion, you could also consider building the destination EPR dynamically as required. I did this sometime back for a customer as shown below: <syn:header name="To" expression="fn:concat('http://host/service_', syn:get-property('version'))'"/>
   <syn:send/>
After that I did some simple performance measurements (load tests using soapUI) which I would like to share with you and discuss about it in a separate posting.
I am really keen to know more about this, and would suggest that you tune your OS TCP stack and use HTTP 1.1 for best performance. You may find the following articles interesting as well, and may want to look at the benchmark.jar from the following links that handles HTTP 1.1 and SSL correctly and has very good performance compared to ApacheBench for Web services testing
http://wso2.org/library/1721
http://wso2.org/library/2259

asankha

_______________________________________________
Esb-java-user mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/esb-java-user

Reply via email to