By default, SOAPam Client resolves the DNS name of the service endpoint only once, at startup, and caches the result. (Resolving is the process of querying a Domain Name System server to translate a name like ‘myservice.nuwavetech.com’ to an IP address like 126.96.36.199.) Resolution is done only once in order to improve performance by eliminating the overhead of performing the DNS lookup for every connection to the web service endpoint.
This approach works well, except if the IP address associated with DNS name changes between the time that SOAPam resolves it and the time a connection to the endpoint server must be made (to perform a web service call). One reason that a web service endpoint IP address may change is that the service is using a ‘round-robin DNS’ scheme to implement load balancing (i.e., repeated DNS queries of the same name return the ‘next’ IP address from a pool of addresses.) Since SOAPam continues to use the same cached IP address, the endpoint server’s load balancing scheme is circumvented, having potentially adverse performance implications.
Another case in which the server’s IP address could change is during disaster recovery. In this scenario, the target production server’s IP address is no longer reachable and DNS has been updated to refer to a backup server’s IP address. However, SOAPam will continue to use the cached (now invalid) IP address, resulting in a connection error for each web service call. Errors will continue until the SOAPAMCP process is restarted.
To avoid these situations, you can use the SOAPAMCP –resolveonconnect command line option at startup to make SOAPam resolve the DNS name every time a connection to the service endpoint is required. Check out the details of –resolveonconnect in the SOAPam Client Documentation, as there are performance considerations.