Für Version AWS SDK für Java 1.x wurde der Support am 31. Dezember 2025 eingestellt. Wir empfehlen Ihnen, auf den zu migrieren, AWS SDK for Java 2.xum weiterhin neue Funktionen, Verfügbarkeitsverbesserungen und Sicherheitsupdates zu erhalten.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Legen Sie die JVM-TTL für die Suche nach DNS-Namen fest
Die Java Virtual Machine (JVM) speichert DNS-Namensauflösungen zwischen. Wenn die JVM einen Hostnamen zu einer IP-Adresse auflöst, speichert sie die IP-Adresse für einen bestimmten Zeitraum zwischen. Diese Zeit ist als Time-to-Live (TTL, Lebensdauer) bekannt.
Da AWS Ressourcen DNS-Namenseinträge verwenden, die sich gelegentlich ändern, empfehlen wir Ihnen, Ihre JVM mit einem TTL-Wert von 5 Sekunden zu konfigurieren. Auf diese Weise wird bei Änderung der IP-Adresse einer Ressource sichergestellt, dass Ihre Anwendung die neue IP-Adresse der Ressource durch erneute Abfrage des DNS abrufen und nutzen kann.
Bei einigen Java-Konfigurationen ist die JVM-Standard-TTL so festgelegt, dass DNS-Einträge nie aktualisiert werden, bis die JVM neu gestartet wird. Wenn sich also die IP-Adresse einer AWS Ressource ändert, während Ihre Anwendung noch läuft, kann sie diese Ressource erst verwenden, wenn Sie die JVM manuell neu starten und die zwischengespeicherten IP-Informationen aktualisiert werden. In diesem Fall ist es wichtig, die TTL der JVM so einzustellen, dass sie die zwischengespeicherten IP-Daten von Zeit zu Zeit aktualisiert.
Wie legt man die JVM-TTL fest
Um die TTL der JVM zu ändern, legen Sie den Sicherheitseigenschaftswert networkaddress.cache.ttlnetworkaddress.cache.ttl es sich um eine Sicherheitseigenschaft und nicht um eine Systemeigenschaft handelt, d. h. sie kann nicht mit dem Befehlszeilen-Flag gesetzt werden. -D
Option 1: Stellen Sie sie programmgesteuert in Ihrer Anwendung ein
Rufen Sie 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 } }
Option 2: Legen Sie es in der Datei java.security fest
Legen Sie die networkaddress.cache.ttl Eigenschaft in der $JAVA_HOME/jre/lib/security/java.security Datei für Java 8 oder der $JAVA_HOME/conf/security/java.security Datei für Java 11 oder höher fest.
Das Folgende ist ein Ausschnitt aus einer java.security Datei, die zeigt, dass der TTL-Cache auf 5 Sekunden eingestellt ist.
# # 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...
Alle Anwendungen, die auf der durch die $JAVA_HOME Umgebungsvariable repräsentierten JVM ausgeführt werden, verwenden diese Einstellung.
Option 3: Verwenden Sie das Fallback für JDK-Systemeigenschaften (Befehlszeile)
Wenn Sie die Sicherheitskonfiguration oder den Sicherheitscode nicht ändern können, können Sie die JDK-Systemeigenschaften verwenden. Diese dienen als Fallbacks, wenn keine Sicherheitseigenschaft definiert ist.
sun.net.inetaddr.ttl— Steuert erfolgreiche Suchvorgänge (positive TTL)sun.net.inetaddr.negative.ttl— Steuert fehlgeschlagene Suchvorgänge (negative TTL)
java -Dsun.net.inetaddr.ttl=5 -Dsun.net.inetaddr.negative.ttl=1 -jar myapp.jar
Anmerkung
Dies sind JDK-internal Eigenschaften, die in der Oracle Java 8 Networking Properties