cache de DNS
Hola,
Tengo una aplicacion que manda paquetes UDP a una direccion de un servidor. Inicialmente en la aplicacion habiamos puesto la IP del servidor. Por necesidades de futuros cambios de IP decidimos poner el nombre del servidor para que la direccion se resuelva por DNS. La aplicacion funciona correctamente. El problema aparece cuando cambiamos en nuestros DNS la direccion del servidor. Si la aplicacion continua corriendo ininterrumpidamente nunca detecta el cambio de direccion. Si se termina la aplicacion y se vuelve a lanzar detecta inmediatamente la nueva direccion. Aclaro que el problema no esta relacionado con los tiempos de propagacion de los DNS. Pareciera que el sistema java cachea el valor de la direccion una sola vez al inicio de la aplicacion y despues no los vuelve a refrescar. Variando el TTL del DNS no arrojo ningun resultado. Alguien sabe como se puede refrescar o borrar el cache de DNS en una aplicacion JME?
Saludos y gracias,
Francisco
- Logue-se ou registre-se para enviar comentários
- 2517 leituras

DNS Cache
Hola Francisco,
Por lo que sé, el comportamiento que describes es el correcto -- el entorno Java mantiene la dirección en cache hasta que se reinicia la aplicación. Esto reduce el volumen de requisiciones al DNS interno que genera el equipo. No conozco ningún mecanismo para forzar una purga del cache de DNS dentro de Java - eso se mantiene varias capas más abajo del API.
No sé a qué se deba la frecuente modificación del DNS, pero si es necesario que eso ocurra para la aplicación, lo que haría yo es usar el pushRegistry para reiniciar la aplicación luego de cierto tiempo (3 minutos, p.e.) al no detectarse recibo de información (imagino que tu uso de UDP tiene algún tipo de confirmación de vuelta).
sería algo así:
-- intentar enviar datos
-- si no se ha recibido confirmación
----registrar alarma para auto invocación en un intervalo usando registerAlarm()
----pedir desactivación de MIDlet usando notifyDestroyed().
Eso haría que la aplicación primero pida que se le despierte en cierto tiempo, y luego pide apagarse sola. Al reiniciarse, se reinicializaría el cache de DNS.
Saludos,
Juan Felipe
DNS Cache
Hola Juan Felipe,
Hace tiempo no entraba y por eso no habia visto tu respuesta.
Muchas gracias por eso.
La aplicacion no requiere cambios frecuentes de DNS, de hecho solo preveemos un unico cambio del IP del servidor al que se tiene que comunicar, pero como la aplicacion esta corriendo todo el tiempo no se enteraría nunca del cambio.
De todos modos la solucion que planteas es muy muy buena y parece viable de implementar.
Muchas gracias nuevamente.
Saludos
Francisco.