

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Configurar el TTL de JVM para las búsquedas de nombres DNS
<a name="jvm-ttl-dns"></a>

La máquina virtual de Java (JVM) almacena en caché las búsquedas de nombres DNS. Cuando la JVM resuelve un nombre de host en una dirección IP, almacena en caché la dirección IP durante un período de tiempo específico, conocido como TTL *time-to-live*.

Como AWS los recursos utilizan entradas de nombres DNS que cambian de vez en cuando, le recomendamos que configure la JVM con un valor TTL de 5 segundos. Con esto se asegurará de que cuando cambie la dirección IP de un recurso, su aplicación pueda recibir y utilizar la nueva dirección IP del recurso volviendo a consultar el DNS.

En algunas configuraciones de Java, el TTL predeterminado de JVM está establecido de forma que *nunca* se actualicen las entradas DNS hasta que se reinicie la JVM. Por lo tanto, si la dirección IP de un AWS recurso cambia mientras la aplicación aún se está ejecutando, no podrá usar ese recurso hasta que *reinicie manualmente la JVM y se actualice* la información de IP almacenada en caché. En este caso, es fundamental establecer el TTL de la JVM de forma que actualice periódicamente la información de las direcciones IP almacenada en caché.

## Cómo configurar el TTL de JVM
<a name="how-to-set-the-jvm-ttl"></a>

[Para modificar el TTL de la JVM, defina el valor de la propiedad de seguridad networkaddress.cache.ttl.](https://docs.oracle.com/en/java/javase/17/core/java-networking.html#GUID-A680DADB-C4C1-40F1-B568-D9A97C917F5D) Tenga en cuenta que `networkaddress.cache.ttl` es una propiedad de *seguridad, no una propiedad* del sistema, es decir, no se puede configurar con el indicador de línea de comandos. `-D`

### Opción 1: configúrelo mediante programación en su aplicación
<a name="set-ttl-programmatically"></a>

Llama al [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)principio de la aplicación, antes de crear cualquier cliente AWS del SDK y antes de realizar cualquier solicitud de red:

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

### Opción 2: configúrelo en el archivo java.security
<a name="set-ttl-java-security-file"></a>

Establezca la `networkaddress.cache.ttl` propiedad en el `$JAVA_HOME/jre/lib/security/java.security` archivo para Java 8 o en `$JAVA_HOME/conf/security/java.security` el archivo para Java 11 o superior.

A continuación se ofrece muestra un fragmento de archivo `java.security` que muestra la caché de TTL configurada en 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
...
```

Todas las aplicaciones que se ejecutan en la JVM representada por la variable de `$JAVA_HOME` entorno utilizan esta configuración.

### Opción 3: Utilice la opción alternativa de propiedades del sistema JDK (línea de comandos)
<a name="set-ttl-system-property"></a>

Si no puede modificar la configuración o el código de seguridad, puede utilizar las propiedades del sistema JDK. Actúan como alternativas si no se ha definido ninguna propiedad de seguridad.
+ `sun.net.inetaddr.ttl`— Controla las búsquedas correctas (TTL positivo)
+ `sun.net.inetaddr.negative.ttl`— Controla las búsquedas fallidas (TTL negativo)

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

**nota**  
Se trata de propiedades internas del JDK documentadas en la referencia de [Oracle Java 8 Networking Properties como propiedades](https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html) privadas que «es posible que no se admitan en futuras versiones». Utilice las opciones 1 y 2 siempre que sea posible.