Originally posted by Andy Hahn:
The reasons for not using an actual request are 1) we get charged for calling the service, 2) we use live sensitive customer information in the payload (every request gets audited), and 3) historically most of our axis related issues have been with connectivity/handshake/service being up.
You have a service level agreement that makes you pay for unsuccessfully completed requests??? Or it this a transport layer cost? The sensitivity issue has to be resolved regardless of whether the request will be successful or not. And your third reason simply emphasizes your need to have a way of gracefully backing out if something goes wrong "in the middle". Web service invocations are not as transparent as local object method calls.
And there is no standard way of determining if a "service is up". In fact some services are "composed services" that could fail if any one of the services they delegate to is down. So the only way to know is to try and then gracefully deal with any exceptions that may occur.