I thought it necessary to let you know of an issue we had at work recently and our solution.
We have a 4 server cluster fronted by a Zeus box (which is a load balancer and also persists user sessions on a given server based on their JSESSIONID). We have our webservices hosted across all four servers (along with our other applications). Anyway we recently migrated from a Radware load balancing solution to the Zeus solution, a couple of days later we started getting errors on our applicaitons that were calling webservices. The error was "Connection refused". I tried calling the WSDL through a browser and the WSDL returned without error. When I tried to instantiate the webservice programmatically I succeeded but when I tried to call a method on the object it failed with the "Connection refused" error. Which led me to believe the WSDL being generated by CF was wrong ... but why was it wong and where was it wrong? So I read through the WSDL and found, near the bottom of the WSDL file, a line/node "wsdl:location" with the valus as a url that subsequent method calls are made against ... and guess what - the url had a port number 86 appended to the host name i.e. "webservice.company.com:86". So the next question is why did CF generate the WSDL with the port number appended to the host? Well I have the answer right here ... requests obviously go via the Zeus box listening on port 80, the Zeus box manipulates the request and sends it to one of the servers over its health check port which in this case was port 86. So ColdFusion was generating the WSDL based on the request from the Zeus box with port 86 appended to the host. Which explains why subsequent method calls failed - Zeus doesn't listen on port 86. So the final question - how did we fix this? Zeus comes with a feature called "TrafficScript" so we used this to rewrite the SOAP response to ensure the "webservices.company.com:86" is replaced with "webservice.company.com". It is probably also worth mentioning that the rewriting will only occur if the calling CF application isn't configured to cache webservices OR if it has been configured to cache webservices will occur when it first calls the webservice or if the CFC changes. Hope this makes sense ... questions? --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "cfaussie" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cfaussie?hl=en -~----------~----~----~----~------~----~------~--~---
