I want to track the physical location of the client i.e The client who has logged in to my site I want to know their city/town and country.
I think there are 2 steps
1. Get the ip address of the machine
2. Let your app talk to some other add which can give you location of the client based on IP
Does not look like a big task considering google can pin point to the city from which request originated in google analytics.
But in java this look a difficult task.
I cannot get IP from servlet API like getRemoteAddress() because it returns IP of the proxy
If it returns the IP of a proxy, then you may need to check the x-forwarded-for request header. Public proxies will pass the client's IP address in there. If it isn't available either, then you're out of possibilities at the server side. Best what you can do is to run a piece of Java code at the client side which sniffs the local IP address and sends it to the server side. You can do that in form of a signed applet or webstart application which you embed in your JSP.