

Le AWS SDK pour Java 1.x a été atteint end-of-support le 31 décembre 2025. Nous vous recommandons de migrer vers le pour continuer [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html)à bénéficier des nouvelles fonctionnalités, des améliorations de disponibilité et des mises à jour de sécurité.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Définissez le TTL de la JVM pour les recherches de noms DNS
<a name="jvm-ttl-dns"></a>

La machine virtuelle Java (JVM) met en cache les recherches de nom DNS. Lorsque la JVM convertit un nom d'hôte en adresse IP, elle met l'adresse IP en cache pendant une période spécifiée, connue sous le nom de *time-to-live*(TTL).

Étant donné que les AWS ressources utilisent des entrées de nom DNS qui changent occasionnellement, nous vous recommandons de configurer votre JVM avec une valeur TTL de 5 secondes. Ainsi, lorsque l'adresse IP d'une ressource change, votre application peut recevoir et utiliser la nouvelle adresse IP de la ressource en interrogeant le DNS.

Dans certaines configurations Java, la durée de vie par défaut de la JVM est définie de façon à ce que la JVM n'actualise *jamais* les entrées DNS tant qu'elle n'est pas redémarrée. Ainsi, si l'adresse IP d'une AWS ressource change alors que votre application est toujours en cours d'exécution, elle ne pourra pas utiliser cette ressource tant que vous n'aurez pas *redémarré manuellement* la JVM et que les informations IP mises en cache ne seront pas actualisées. Dans ce cas, il est essentiel de définir la durée de vie de la JVM de façon à ce que ses informations IP mises en cache soient régulièrement actualisées.

## Comment configurer le JVM TTL
<a name="how-to-set-the-jvm-ttl"></a>

Pour modifier le TTL de la JVM, définissez la valeur de la propriété de sécurité [networkaddress.cache.ttl](https://docs.oracle.com/en/java/javase/17/core/java-networking.html#GUID-A680DADB-C4C1-40F1-B568-D9A97C917F5D). Notez qu'il `networkaddress.cache.ttl` s'agit d'une *propriété de sécurité* et non d'une propriété système, c'est-à-dire qu'elle ne peut pas être définie avec l'indicateur de `-D` ligne de commande.

### Option 1 : définissez-le par programmation dans votre application
<a name="set-ttl-programmatically"></a>

Appelez [https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/security/Security.html](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/security/Security.html)au début du démarrage de votre application, avant la création de clients AWS SDK et avant toute demande réseau :

```
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
    }
}
```

### Option 2 : définissez-le dans le fichier java.security
<a name="set-ttl-java-security-file"></a>

Définissez la `networkaddress.cache.ttl` propriété dans le `$JAVA_HOME/jre/lib/security/java.security` fichier pour Java 8 ou dans `$JAVA_HOME/conf/security/java.security` le fichier pour Java 11 ou supérieur.

Ce qui suit est un extrait d'un `java.security` fichier qui montre que le cache TTL est réglé sur 5 secondes.

```
#
# 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
...
```

Toutes les applications qui s'exécutent sur la JVM représentée par la variable d'`$JAVA_HOME`environnement utilisent ce paramètre.

### Option 3 : utiliser la solution de remplacement des propriétés du système JDK (ligne de commande)
<a name="set-ttl-system-property"></a>

Si vous ne pouvez pas modifier la configuration ou le code de sécurité, vous pouvez utiliser les propriétés du système JDK. Ils agissent comme des solutions de secours si aucune propriété de sécurité n'est définie.
+ `sun.net.inetaddr.ttl`— Contrôle les recherches réussies (TTL positif)
+ `sun.net.inetaddr.negative.ttl`— Contrôle les échecs de recherche (TTL négatif)

```
java -Dsun.net.inetaddr.ttl=5 -Dsun.net.inetaddr.negative.ttl=1 -jar myapp.jar
```

**Note**  
Il s'agit de propriétés internes au JDK décrites dans la référence aux propriétés [réseau d'Oracle Java 8 en tant que propriétés](https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html) privées qui « ne seront peut-être pas prises en charge dans les versions futures ». Utilisez les options 1 et 2 dans la mesure du possible.