Pregunta

Tengo un código que estoy haciendo disponible a través de RMI.

Si mi programa finaliza de manera anormal, no habré llamado a Naming.unbind (), y presumiblemente una referencia al objeto estará en el registro RMI y las llamadas posteriores a Naming.bind () con el mismo nombre fallará.

¿Cómo me aseguro de que se eliminen las referencias falsas?

¿Fue útil?

Solución

Hay algo llamado Distribuidor de Basura Distribuido (DGC). Utiliza arrendamientos para rastrear enlaces obsoletos y los recogerá una vez que no se usen. Establezca la propiedad del sistema leaseValue de la exportación JVM para determinar cuándo caduca un enlace.

Establecer el valor en demasiado bajo daría como resultado un aumento del tráfico de red. Si lo configura demasiado alto, las referencias obsoletas se mantendrán demasiado tiempo. Puede llamar a un método idempotente después de la búsqueda en el lado del cliente solo para asegurarse de que el objeto esté activo (o use algo como los apéndices inteligentes de Weblogic). En el lado del servidor, puede verificar el registro y, si existe un enlace, anular el registro (en caso de que esté obsoleto), desechar el objeto remoto y exportar uno nuevo o simplemente dejarlo (si está activo).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top