While troubleshooting ISIS 5 rollout connectivity issues, we discovered that the Java Virtual Machine by default caches any DNS entry it uses indefinitely until the application is restarted.

http://java.sun.com/j2se/1.4.2/docs/api/java/net/InetAddress.html

Essentially, once a Java application makes a successful connection to an internet resource, it caches the its DNS information in an internal cache. It never looks up that entry against the real DNS again until the application is restarted.

This hidden cache caused a number of Java applications to not able to connect to ISIS 5 even long after the DNS change should have replicated to all DNS servers.

This behavior is true for at least Java 1.4.2 and earlier. There is no confirmation whether Java 1.5 behaves the same way, although in at least one case, one Java 1.5 application did not have to be restarted to see the DNS changes.

This cache behavior also affects ISIS applications written in Cold Fusion since it depends on Java libraries to make SOAP calls:

http://tjordahl.blogspot.com/2004/10/cfmx-and-dns-caching.html

Here are additional links about the hidden Java DNS cache:

http://www.burnthacker.com/archives/000195.html
http://www.limewire.org/pipermail/codepatch/2004-February/000310.html