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
-~----------~----~----~----~------~----~------~--~---

Reply via email to