To my knowledge Java has always had DNS caching problems as long as Java has existed. Every company I have worked for has always disabled Java's DNS cache and also forced IPv4 due to lookup priorities causing delays since most data-center internal names are only IPv4.
In my last gig we ran an instance of Unbound DNS on each host that handled the heavy Java DNS lookup traffic and also did a better job of determining which edge DNS recursive server is the fastest and had far better retry mechanisms than those built into the OS. Unbound also empowers one with better controls over min/max TTL and flushing zones that are being updated during a maintenance window and options to optionally enable query request/answer logging to a ram disk when DNS is in question.
To my knowledge Java has always had DNS caching problems as long as Java has existed. Every company I have worked for has always disabled Java's DNS cache and also forced IPv4 due to lookup priorities causing delays since most data-center internal names are only IPv4.
In my last gig we ran an instance of Unbound DNS on each host that handled the heavy Java DNS lookup traffic and also did a better job of determining which edge DNS recursive server is the fastest and had far better retry mechanisms than those built into the OS. Unbound also empowers one with better controls over min/max TTL and flushing zones that are being updated during a maintenance window and options to optionally enable query request/answer logging to a ram disk when DNS is in question.