icono_twiter
Alejandro Pérez García

Alejandro es socio fundador de Autentia y nuestro experto en J2EE, Linux y optimización de aplicaciones empresariales.

Ingeniero en Informática y Certified ScrumMaster

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.

Ver todos los tutoriales del autor

Fecha de publicación del tutorial: 2008-02-07

Tutorial visitado 7.558 veces Descargar en PDF
Como crear y destruir programáticamente un RMI Registry

Como crear y destruir programáticamente un RMI Registry

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:

$ 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



A continuación puedes evaluarlo:

Regístrate para evaluarlo

Por favor, vota +1 o compártelo si te pareció interesante

Share |
Anímate y coméntanos lo que pienses sobre este TUTORIAL: