java.net.URL dynamic IP Problem

mehirc

Mitglied
Hi,

ich erstelle ein URL Object mit einer dynamischen IP-Adresse und benutze es um dorthin Daten per GET-Parameter zu senden.

Code:
URL url = new URL("http://my.homeip.net/...");
url.openStream();

Der Aufruf wird über einen TimerTask alle 5 Minuten ausgeführt um die Daten aktuell zu halten.

Das Problem ist nun, dass wenn sich die IP-Adresse hinter dem dynamischen Namen ändert, dieser trotz new URL() weiterhin auf die alte IP aufgelöst wird. Letztendlich hilft da nur ein Anwendungs-Neustart weiter.

Soweit ich rausgefunden habe, kann das was damit zu tun haben, dass eine Klasse von Java nur einmal geladen wird und man einen eigenen ClassLoader braucht muss um sie jedesmal neu zu laden. Ich konnte aber nicht rausfinden, wie man das mit der java.net.URL Klasse erreichen kann.

Vielleicht gibt es ja auch eine Möglichkeit abzustellen, dass er sich die IP-Addresse merkt bzw. er die Auflösung jedesmal aktuell macht.

Würde mich freuen wenn jemand eine Idee zu dem Problem hat und mir weiterhelfen kann.

Gruß,

Michael
 
Hallo,

starte deine Anwendung mal mit
-Dnetworkaddress.cache=0 bzw. sun.net.inetaddrl
Damit werden die Daten der hostname lookups nicht mehr gecached.

Gruß Tom
 
Hallo,

starte deine Anwendung mal mit
-Dnetworkaddress.cache=0 bzw. sun.net.inetaddrl
Damit werden die Daten der hostname lookups nicht mehr gecached.

Gruß Tom

Hi Tom,

vielen Dank für den Tip, genau das was ich gebraucht habe, funktioniert prima über Kommandozeile. :)

Auch diese beiden Properties funktionieren aus dem Programm heraus:
Code:
System.setProperty("sun.net.inetaddrl", "0");
Security.setProperty("networkaddress.cachel" , "0");

Ein kleines Problem hab ich jedoch noch, keine dieser Einstellungen funktioniert beim Start über Java Web Start. Hab jetzt einiges nachgelesen und ausprobiert, aber offensichtlich ist das nicht ohne Weiteres möglich.

Gruß,

Michael
 
Zurück