Como crear y destruir programáticamente un RMI Registry

0
15593

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
http://www.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:

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:

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 😉

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

 

Dejar respuesta

Please enter your comment!
Please enter your name here