Je constate que la VM conserve en mémoire l'adresse ip associée à une url
dans le cas du code :
URL url = new URL("http://un.certain.domaine");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
Je m'explique: lorsque java resoud le domaine "un.certain.domaine" en un
adresse ip, il semble qu'il associe pour toujours (jusqu'au redémarrage de
la VM) cette ip à ce nom de domaine, et cela, même si l'ip associée à ce
domaine devait avoir changer. Ce qui veut dire que dans le cas de mon code,
on se connecte encore et toujours à la machine ayant l'ancienne adresse ip.
J'espérais que la commande
java.security.Security.setProperty("networkaddress.cache.ttl", "0");
solutionne ce problème, mais il n'en est rien. ce paramètre ne marche que
pour la classe InetAddress.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Christophe Garnier
Bonjour, En effet, au niveau InetAddress, le cache est perpétuel dans le cas d'une résolution de nom qui a fonctionné. Regardez la classe InetAddress, ce cas est expliqué. Il y a entre autres une propriété dans le SecurityManager, qui se nomme networkaddress.cache.ttl et dont l'initialisation à une autre valeur que -1 (la valeur par défaut) pourrait faire revalider régulièrement cette adresse. Exemple : java.security.Security.setProperty("networkaddress.cache.ttl", "60"); a pour effet de garder la résolution de nom pendant 60 secondes en cache (si cette résolution a réussi).
JC
Bonjour,
Je constate que la VM conserve en mémoire l'adresse ip associée à une url dans le cas du code :
URL url = new URL("http://un.certain.domaine"); HttpURLConnection connection = (HttpURLConnection) url.openConnection();
Je m'explique: lorsque java resoud le domaine "un.certain.domaine" en un adresse ip, il semble qu'il associe pour toujours (jusqu'au redémarrage de la VM) cette ip à ce nom de domaine, et cela, même si l'ip associée à ce domaine devait avoir changer. Ce qui veut dire que dans le cas de mon code, on se connecte encore et toujours à la machine ayant l'ancienne adresse ip.
J'espérais que la commande java.security.Security.setProperty("networkaddress.cache.ttl", "0"); solutionne ce problème, mais il n'en est rien. ce paramètre ne marche que pour la classe InetAddress.
Quelqu'un aurait t'il une piste pour m'aider.
Merci, Christophe
Bonjour,
En effet, au niveau InetAddress, le cache est perpétuel dans le cas
d'une résolution de nom qui a fonctionné. Regardez la classe
InetAddress, ce cas est expliqué. Il y a entre autres une propriété dans
le SecurityManager, qui se nomme networkaddress.cache.ttl et dont
l'initialisation à une autre valeur que -1 (la valeur par défaut)
pourrait faire revalider régulièrement cette adresse.
Exemple : java.security.Security.setProperty("networkaddress.cache.ttl",
"60"); a pour effet de garder la résolution de nom pendant 60 secondes
en cache (si cette résolution a réussi).
JC
Bonjour,
Je constate que la VM conserve en mémoire l'adresse ip associée à une url
dans le cas du code :
URL url = new URL("http://un.certain.domaine");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
Je m'explique: lorsque java resoud le domaine "un.certain.domaine" en un
adresse ip, il semble qu'il associe pour toujours (jusqu'au redémarrage de
la VM) cette ip à ce nom de domaine, et cela, même si l'ip associée à ce
domaine devait avoir changer. Ce qui veut dire que dans le cas de mon code,
on se connecte encore et toujours à la machine ayant l'ancienne adresse ip.
J'espérais que la commande
java.security.Security.setProperty("networkaddress.cache.ttl", "0");
solutionne ce problème, mais il n'en est rien. ce paramètre ne marche que
pour la classe InetAddress.
Bonjour, En effet, au niveau InetAddress, le cache est perpétuel dans le cas d'une résolution de nom qui a fonctionné. Regardez la classe InetAddress, ce cas est expliqué. Il y a entre autres une propriété dans le SecurityManager, qui se nomme networkaddress.cache.ttl et dont l'initialisation à une autre valeur que -1 (la valeur par défaut) pourrait faire revalider régulièrement cette adresse. Exemple : java.security.Security.setProperty("networkaddress.cache.ttl", "60"); a pour effet de garder la résolution de nom pendant 60 secondes en cache (si cette résolution a réussi).
JC
Bonjour,
Je constate que la VM conserve en mémoire l'adresse ip associée à une url dans le cas du code :
URL url = new URL("http://un.certain.domaine"); HttpURLConnection connection = (HttpURLConnection) url.openConnection();
Je m'explique: lorsque java resoud le domaine "un.certain.domaine" en un adresse ip, il semble qu'il associe pour toujours (jusqu'au redémarrage de la VM) cette ip à ce nom de domaine, et cela, même si l'ip associée à ce domaine devait avoir changer. Ce qui veut dire que dans le cas de mon code, on se connecte encore et toujours à la machine ayant l'ancienne adresse ip.
J'espérais que la commande java.security.Security.setProperty("networkaddress.cache.ttl", "0"); solutionne ce problème, mais il n'en est rien. ce paramètre ne marche que pour la classe InetAddress.