It is a bad idea to turn UnknownHostException to IllegalArgumentException.
A readObject() method is missing.
A hashCode() method is missing.
You should not use "transient".