Where is your web service located at when you try to hit it on
server2? If the webservice you are trying to hit is not on the actual
server that is serving WSS you might run into Code Access Security
issues between the servers. Also, you might want to make sure the
webservice is defined in an exluded path by going to central admin,
WSS, define manage paths, and excluding the path to the Web Service.
Impersonation can be good but for the web service to be able to access
certain ojbect model elements you will need to ensure that the web
service has the aforementioned CAS to it. If you bump up your
web.config to give full trust. If this fixes your issue then your
having a CAS problem.