Just as a confirmation, I have the same problem with my Java 6u13. No matter if I change the timeout to 1s or 5s, after just over 2s the exception is thrown.
I see from the Javadoc that non std implementations can ignore this setting and that you should try a getTimeout() after you set it to see the real time out value?
I did try getConnectTimeout() just as the javadoc says and I can see the correct value (i.e. whatever I set it to). The problem still remains that it does not timeout properly. Any more ideas?