O AWS SDK para Java 1.x chegou end-of-support em 31 de dezembro de 2025. Recomendamos que você migre para o AWS SDK for Java 2.x para continuar recebendo novos recursos, melhorias de disponibilidade e atualizações de segurança.
As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Definir o JVM TTL para pesquisas de nome DNS
A JVM armazena em cache pesquisas de nome DNS. Quando a JVM resolve um nome de host para um endereço IP, ela armazena o endereço IP em cache por um período de tempo especificado, conhecido como (TTL). time-to-live
Como AWS os recursos usam entradas de nome DNS que mudam ocasionalmente, recomendamos que você configure sua JVM com um valor TTL de 5 segundos. Isso garante que, quando o endereço IP de um recurso mudar, o aplicativo poderá receber e usar o novo endereço IP do recurso consultando novamente o DNS.
Em algumas configurações do Java, o TTL padrão da JVM é definido de maneira que jamais atualizará entradas DNS até a JVM ser reiniciada. Portanto, se o endereço IP de um AWS recurso mudar enquanto seu aplicativo ainda estiver em execução, ele não poderá usar esse recurso até que você reinicie manualmente a JVM e as informações IP em cache sejam atualizadas. Nesse caso, é crucial definir o TTL da JVM, de forma que ele atualize periodicamente as informações de IP armazenadas em cache.
Como definir o TTL da JVM
Para modificar o TTL da JVM, defina o valor da propriedade de segurança networkaddress.cache.ttlnetworkaddress.cache.ttl é uma propriedade de segurança, não uma propriedade do sistema, ou seja, ela não pode ser definida com o sinalizador de -D linha de comando.
Opção 1: defina-o programaticamente em seu aplicativo
Ligue java.security.Security.setProperty()
import java.security.Security; public class MyApplication { public static void main(String[] args) { Security.setProperty("networkaddress.cache.ttl", "5"); // ... create SDK clients and run application } }
Opção 2: defina-o no arquivo java.security
Defina a networkaddress.cache.ttl propriedade no $JAVA_HOME/jre/lib/security/java.security arquivo para Java 8 ou $JAVA_HOME/conf/security/java.security arquivo para Java 11 ou superior.
Veja a seguir um trecho de um arquivo java.security que mostra o cache de TTL definido para 5 segundos.
# # The Java-level namelookup cache policy for successful lookups: # # any negative value: caching forever # any positive value: the number of seconds to cache an address for # zero: do not cache # ...networkaddress.cache.ttl=5...
Todos os aplicativos executados na JVM representada pela variável de $JAVA_HOME ambiente usam essa configuração.
Opção 3: usar o fallback de propriedades do sistema JDK (linha de comando)
Se você não puder modificar a configuração ou o código de segurança, poderá usar as propriedades do sistema JDK. Eles atuam como substitutos se nenhuma propriedade de segurança for definida.
sun.net.inetaddr.ttl— Controla pesquisas bem-sucedidas (TTL positivo)sun.net.inetaddr.negative.ttl— Controla pesquisas com falha (TTL negativo)
java -Dsun.net.inetaddr.ttl=5 -Dsun.net.inetaddr.negative.ttl=1 -jar myapp.jar
nota
Essas são propriedades internas do JDK documentadas na referência Oracle Java 8 Networking Properties