9. okt. 2006

Debugging webservices

Nowadays everything in this SOA age (Service Oriented Arhitecture) is developed as webservices.
There's a lot of frameworks that hides the specific implementation so often you ask:

What do I send to that webservice, and what do the service return?


For that sake, there's a fantastic tool called tcpmon, which can be started as Java Webstart.
Here you make a proxy where you specify a localport where tcpmon listens, and which server/port the real service is implemented. Tcpmon then shows exactly what is transmitted to the service and what is received.

Right now I have the problem that we're using a proxy, so tcpmon can't see the destination service (it's through VPN).
I can see the server in my browser, so I looked up the proxy in my browsers configuration (was webproxy:8080) and tried starting up tcpmon with -Dhttp.proxyHost=webproxy -Dhttp.proxyPort=8080, but still it won't work...

The solution is actually very simple:
  1. Start the application with: -Dhttp.proxyHost=localhost -Dhttp.proxyPort=8888 (Now we use tcpmon as proxy)

  2. In tcpmon start a new connection with: (the proxy now uses a proxy :-)
    Port8888
    Server NameProxyserver (in my case webproxy)
    Server PortProxyserverport (in my case 8080)

You now don't have to change the endpoint of the service, because it automatically routes though tcpmon!
Voila! Mission accomplished!