Como crear y destruir programáticamente un RMI Registry

En este sencillo tutorial vamos a ver como podemos arrancar o parar el Registry programáticamente, es decir lo arrancaremos y pararemos desde el propio programa Java.

Creación: 05-02-2008

Índice de contenidos

1.Introducción
2.Entorno
3.Arrancando el Registry
4.Parando el Registry
5.Conclusiones
6.Sobre el autor

1. Introducción

En el tutorial
https://adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=rmiRemoteRegistry
ya hemos visto (lo veíamos en el punto 5.1) como podemos levantar un Registry desde línea de comandos con:

$ rmiregistry &

Esto levantará un nuevo proceso en el sistema. En Linux podríamos pararlo haciendo un kill de este proceso.

En este sencillo tutorial vamos a ver como podemos arrancar o parar el Registry programáticamente, es decir lo arrancaremos y pararemos desde el propio programa Java.


2. Entorno

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil Asus G1 (Core 2 Duo a 2.1 GHz, 2048 MB RAM, 120 GB HD).
  • Sistema Operativo: GNU / Linux, Debian (unstable), Kernel 2.6.23, KDE 3.5
  • JDK 1.5.0_13 (instalada con el paquete sun-java5-jdk de Debian)
  • Eclipse Europa 3.3, con soporte para desarrollo JEE (WTP 2.0)


3. Arrancando el Registry

Arrancar un Registry programáticamente es muy sencillo. Basta con usar la clase LocateRegistry, la misma clase que veíamos en el otro tutorial para localizar el Registry, pero esta vez usaremos el método createRegistry(int port).

Por ejemplo:

final Registry registry = LocateRegistry.createRegistry(Registry.REGISTRY_PORT);

Donde Registry.REGISTRY_PORT es el puerto por defecto donde se suele levantar el Registry (1099).

Con este método obtendremos una excepción si, por ejemplo, el puerto ya está siendo usado.

4. Parando el Registry

Pararlo no es tan fácil como arrancarlo, y tiene un poco de truco. De hecho si buscáis en la documentación o por Internet, cuesta un poco encontrarlo (o por lo menos, en su día, a mi me costo 😉

UnicastRemoteObject.unexportObject(registry, true);

Y diréis ¿donde está el truco? ¿cual es la complicación? Bien, complicación ninguna, y el truco está en que «registry» tiene que ser exactamente la misma instancia que nos había devuelto el método createRegistry.

Es decir, no vale con localizar el Registry mediente LocateRegistry.getRegistry(), es necesario pasarle al UnicastRemoteObject.unexportObject() exactamente la misma instancia (la misma referencia) que nos había devuelto LocateRegistry.createRegistry().

5. Conclusiones

Muchas veces las cosas son más sencillas de lo que parecen, sólo hay que saber el «truco». Desde Autentia (http://www.autentia.com), a través de estos tutoriales, intentamos que estos «trucos» estén al alcance de todos y dejen de ser «trucos» para convertirse en conocimiento general.

6. Sobre el autor

Alejandro Pérez García, Ingeniero en Informática (especialidad de Ingeniería del Software)

Socio fundador de Autentia (Formación, Consultoría, Desarrollo de sistemas transaccionales)

mailto:alejandropg@autentia.com

Autentia Real Business Solutions S.L. – «Soporte a Desarrollo»

http://www.autentia.com

 

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

He leído y acepto la política de privacidad

Información básica acerca de la protección de datos

  • Responsable: IZERTIS S.A.
  • Finalidad: Envío información de carácter administrativa, técnica, organizativa y/o comercial sobre los productos y servicios sobre los que se nos consulta.
  • Legitimación: Consentimiento del interesado
  • Destinatarios: Otras empresas del Grupo IZERTIS. Encargados del tratamiento.
  • Derechos: Acceso, rectificación, supresión, cancelación, limitación y portabilidad de los datos.
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad

Alejandro es socio fundador de Autentia y nuestro experto en Java EE, Linux y optimización de aplicaciones empresariales. Ingeniero en Informática y Certified ScrumMaster. Seguir @alejandropgarci Si te gusta lo que ves, puedes contratarle para darte ayuda con soporte experto, impartir cursos presenciales en tu empresa o para que realicemos tus proyectos como factoría (Madrid). Puedes encontrarme en Autentia: Ofrecemos servicios de soporte a desarrollo, factoría y formación.

¿Quieres publicar en Adictos al trabajo?

Te puede interesar

Tutoriales
La segmentación predictiva en tiempo real optimiza la publicidad digital con IA y datos masivos, mejorando conversión y eficiencia en la inversión publicitaria.
Tutoriales
Desarrollo de apps en Android Automotive OS: configuración, interacción con el Host, UI con Car App Library, navegación y pruebas en emulador
Tutoriales
Aprende a implementar un Outbox Transaccional con AsyncAPI, SpringModulith y ZenWaveSDK, garantizando la consistencia y externalización eficiente de eventos en arquitecturas distribuidas.