Die Version AWS SDK für Java 1.x wurde end-of-support am 31. Dezember 2025 erreicht. Wir empfehlen Ihnen, auf den zu migrieren AWS SDK for Java 2.x, um 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 in eine IP-Adresse auflöst, speichert sie die IP-Adresse für einen bestimmten Zeitraum im Cache, der als (TTL) bezeichnet wird. time-to-live
Da AWS Ressourcen DNS-Namenseinträge verwenden, die sich gelegentlich ändern, empfehlen wir, dass Sie Ihre JVM mit einem TTL-Wert von 5 Sekunden 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-interne Eigenschaften, die in der Oracle Java 8 Networking Properties