

La AWS SDK per Java 1.x è stata raggiunta end-of-support il 31 dicembre 2025. Ti consigliamo di eseguire la migrazione a per continuare [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html)a ricevere nuove funzionalità, miglioramenti della disponibilità e aggiornamenti di sicurezza.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Imposta il TTL JVM per le ricerche dei nomi DNS
<a name="jvm-ttl-dns"></a>

Java Virtual Machine (JVM) memorizza nella cache le ricerche dei nomi DNS. Quando la JVM risolve un nome host in un indirizzo IP, memorizza l'indirizzo IP nella cache per un periodo di tempo specificato, noto come (TTL). *time-to-live*

Poiché AWS le risorse utilizzano voci di nomi DNS che cambiano occasionalmente, si consiglia di configurare la JVM con un valore TTL di 5 secondi. Questo garantisce che quando l'indirizzo IP di una risorsa cambia, l'applicazione potrà ricevere e utilizzare il nuovo indirizzo IP della risorsa richiedendo il DNS.

In alcune configurazioni Java, il TTL predefinito di JVM è impostato in modo da *non* aggiornare mai le voci DNS finché JVM non viene riavviato. Pertanto, se l'indirizzo IP di una AWS risorsa cambia mentre l'applicazione è ancora in esecuzione, non sarà possibile utilizzare tale risorsa finché non si *riavvia manualmente* la JVM e le informazioni IP memorizzate nella cache non vengono aggiornate. In questo caso, è fondamentale impostare il valore TTL della JVM in modo che aggiorni periodicamente le informazioni IP memorizzate nella cache.

## Come impostare il TTL JVM
<a name="how-to-set-the-jvm-ttl"></a>

[Per modificare il TTL della JVM, imposta il valore della proprietà di sicurezza networkaddress.cache.ttl.](https://docs.oracle.com/en/java/javase/17/core/java-networking.html#GUID-A680DADB-C4C1-40F1-B568-D9A97C917F5D) Nota che `networkaddress.cache.ttl` è una proprietà di *sicurezza, non una proprietà di* sistema, cioè non può essere impostata con il flag della riga di comando. `-D`

### Opzione 1: impostala a livello di codice nella tua applicazione
<a name="set-ttl-programmatically"></a>

Effettua una chiamata nelle [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)prime fasi di avvio dell'applicazione, prima della creazione di qualsiasi client AWS SDK e prima di effettuare qualsiasi richiesta di rete:

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

### Opzione 2: impostala nel file java.security
<a name="set-ttl-java-security-file"></a>

Imposta la `networkaddress.cache.ttl` proprietà nel `$JAVA_HOME/jre/lib/security/java.security` file per Java 8 o nel `$JAVA_HOME/conf/security/java.security` file per Java 11 o versioni successive.

Quello che segue è un frammento di un `java.security` file che mostra la cache TTL impostata su 5 secondi.

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

Tutte le applicazioni eseguite sulla JVM rappresentata dalla variabile di `$JAVA_HOME` ambiente utilizzano questa impostazione.

### Opzione 3: utilizzare il fallback delle proprietà del sistema JDK (riga di comando)
<a name="set-ttl-system-property"></a>

Se non è possibile modificare la configurazione o il codice di sicurezza, è possibile utilizzare le proprietà del sistema JDK. Queste fungono da fallback se non è definita alcuna proprietà di sicurezza.
+ `sun.net.inetaddr.ttl`— Controlla le ricerche riuscite (TTL positivo)
+ `sun.net.inetaddr.negative.ttl`— Controlla le ricerche non riuscite (TTL negativo)

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

**Nota**  
Si tratta di proprietà interne a JDK documentate nel riferimento [Oracle Java 8 Networking Properties come proprietà](https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html) private che «potrebbero non essere supportate nelle versioni future». Utilizzare le opzioni 1-2 quando possibile.