Está en la página 1de 38

Gua para trabajar con RMI sin Problemas en el IDE Netbeans

Ingeniero John Carlos Arrieta Arrieta

Para trabajar RMI con Netbeans sin presentar errores.


Seguir los siguientes pasos:
Paso 1). Configurar el Archivo de Polticas de Seguridad de Java para que nos
permita establecer conexiones tanto en el cliente como en el servidor (Nota he
probado en red este punto y solo es necesario hacer este paso en PC Cliente)
Ir a la ruta de Java, buscar la carpeta de instalacin de la JVM o Maquina Virtual
Java, la cual se instala en la carpeta jreX, donde X es la versin de java, buscar
carpeta lib, dentro de ella buscar la carpeta security y dentro de esta ultima el
archivo de polticas java.policy
Nota si tienen un PC de 64bit, verificar si tienen Ja va instalado para arquitectura
de 32 (x86) y 64, en ambas carpetas java deben realizar este paso
Por ejemplo en Windows es:
C:\Program Files (x86)\Java\jre7\lib\security

Darle propiedades de escritura para el usuario con el que tienen la sesion abierta,
por ejemplo en Windows es haciendo clic derecho sobre el archivo java.policy y
escoger la opcin propiedades

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta

Luego dar en Aceptar -> Aceptar

Abrir archivo java.policy con algn programa de edicin de texto, por ejemplo el
WordPad, el Note++, o arrastrarlo y soltarlo sobre la ventana de Netbeans.
Agregarle al final un permiso que nos permita realizar todo.

grant {
permission java.security.AllPermission;
};
Guardar los cambios.
Paso 2: Crear un proyecto Java tipo Java Class Library.
En Netbeans ir al men Archivo / Proyecto Nuevo y dar clic en esta opcin del
men.

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta

Seleccionar Categora Java, y el proyecto de tipo Java Class Library

Darle un nombre y ubicacin al proyecto

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta
Esta es la estructura de paquetes y archivos inciales del proyecto (como vemos
esta vacio)

Paso 3: Creamos un nuevo paquete para guardar las Interfaces que heredan de
Remote y una clase utilitaria que nos permita pasarle de forma automtica
parmetros de ejecucin.

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta

Darle

nombre

al

El nuevo paquete es agregado al proyecto, pero vemos que esta vacio

Paso 4: Creamos las Interfaces que heredaran de la Interfaz Remote.

paquete

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta
Otro paquete dentro del paquete Raiz

Estructura del proyecto con los dos paquetes creados,

Sobre el paquete rmi creamos una nueva interfaz.

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta
Le damos un nombre a la Interfaz, en este caso la llamare IConvetidorDivisas.

La interfaz es agregada al proyecto

Lo ms importante del cdigo de la interfaz es lo siguiente:


Debe importar las clases e Interfaces necesarias, entre ellas:
La Interfaz Remote del paquete java.rmi.
La clase RemoteException del paquete java.rmi.
La Interfaz Remote se utiliza para indicar cules son los mtodos que sern
invocados de forma remota ( desde el cliente hacia el servidor).a
La Clase RemoteException se utiliza para capturar informacin sobre cualquier
posible errores (excepciones) ocurridas durante la ejecucin del programa.

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta

El cdigo de la interfaz ICovertidorDivisas muestra los 6 mtodos que pueden ser


invocados remotamente por los clientes rmi

Ahora agregamos una clase la que llamaremos Utilidad, esta clase tendr un
mtodo que permitir pasarle al compilador la ruta de la Interfaz, para ser
compilada.
Paso 5: Crear una nueva clase Llamada por ejemplo Utilidad

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta
Le damos un Nombre a la clase y la ubicamos en un paquete

La nueva clase es agregada al proyecto

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta
En el codigo de la clase Utilidad podemo observar:
Una propiedad publica statica y constante llamada CODEBASE, de tipo cadena, el
valor de esta variable es "java.rmi.server.cdebase" que indica al compilador que se
va a realizar una compilacion usando RMIC.
Desde la version 5 de Java, no es necesario generar un archivo _STUB.class.

El parametro c de tipo Class<?> del metodo setCodeBase, indica que sele puede
pasar cualquier clase.

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta
c.getProtectionDomain().getCodeSource().getLocation().toString() devuelve la ruta
del archivo de codigo fuente .java de la clase que se ha pasado como parametro
Class <?> c.
System.getProperty(CODEBASE) retorna la propiedad de compilacion de codigo
Java para RMI y lo asigna a la varaible path.
System.setProperty(CODEBASE, ruta); coloca la ruta de la clase en esta propieda

Paso 6: Generamos la una librera .jar con los archivos compilados del proyecto

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta

En la ventana Salida podemos ver el resultado de la compilacin y generacin de


la librera .jar, la cual es un archivo comprimido donde se agregan todas las clases
compiladas .class de un proyecto java.

En el panel de Archivos podemos observar que se ha generado una carpeta


llamada dist, en la cual se encuentra la libreria .jar en un archivo con el nombre del
proyecto

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta

Paso 7: Crear un Nuevo proyecto para el Servidor.

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta

Paso 8: Crear un nuevo proyecto para el Cliente.

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta

Paso 9: Agregamos la librera .jar creada anterior

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta

Este paso se realiza en el proyecto cliente y el proyecto para el servidor.

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta
Paso 10: Crear una Clase por cada Interfaz de la cual se desee Implementar sus
mtodos remotos

La clase debe implementar al menos una de las interfaces Remotas.

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta
Paso 11: Generamos el constructor de la clase (Insertar Codigo)

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta

Paso 12: Implementar los mtodos de la Interfaz Remota (insertar codigo)

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta
Paso 13: Agregar el cdigo necesario segn la lgica del programa que deseamos
realizar.
En este caso, cambiamos el cdigo del mtodo convertirPesosADolares el
nombre de las variables locales f y f1 generadas automticamente al insertar el
cdigo, ahora se llamaran pesos y dlares respectivamente.
En el cuerpo del mtodo dividimos el valor de la variable pesos entre el valor de la
variable dolares, el resultado lo asignamos a una variable local llamad resultado,
luego retornamos o devolvemos dicho valor al ser invocado este metodo.

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta
Paso 14: Creamos una clase para registrar los objetos remotos, en este caso uno
objeto de tipo IConvertidorDivisas
Definimos un mtodo llamado por ejemplo IniciarServidor y otro detenerServidor

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta
La clase Servidor bsicamente nos permitir iniciar el servidor al invocar el metodo
iniciarServicio registrando en la red un objeto remoto de tipo IConvertidorDivisas
mediante un nombre especifico, en este caso lo nombramos Pepito. Esto se hace:

Registrando el cdigo base de la Interfaz IConvertidorDivisas


Creando un objeto de la clase ConvetidorDivisasImpl
Se exporta en la red el objeto de tipo ConvetidorDivisasImpl en un puerto
deseado, en este caso el puerto 8888, esta operacin retorna un objeto
exportable por la red, el cual se transforma implcitamente a tipo
IConvertidorDivisas y es asignado a una variable llamada objetoRemoto.
Luego se obtiene una instancia u objeto del registro RMI mediante
Posteriormente se utiliza este objeto para registrar el objetoRemoto con un
nombre deseado, en este caso el nombre es Pepito.
Si todo sucede sin problemas, por ltimo se asigna verdadero a la variable
estado, indicando que el servidor se ha iniciado con xito.
todo va encerrado en un bloque try{ } para intentar que todo salga bien, si
llegase a ocurrir un problema o error, este es capturado por la variable ex
de tipo Exception dentro del bloque catch, quien lanza con throw una
Exception con el mensaje original del error, esta excepcin es capturada en
la clase donde sea invocado este mtodo iniciarServidor

Esta clase tambin nos permite detener el servicio, esto se hace invocando el
mtodo detenerServidor, el cual:

Desvincula de la red al objeto remoto buscndolo en la red por su nombre,


en este caso Pepito,
Seguidamente impide que siga siendo exportado el objeto remoto,
Asigna el falso a la variable estado, indicando que el servidor esta Stop

Paso 15: Crear una ventana para controlar el inicio y suspencion del Servidor

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta
Paso 16: Agregamos los elementos de la Ventana:
Para ello creamos un paquete llamado por ejemplo ventanas, luego con clic
derecho sobre este paquete seleccionamos Nuevo/Formulario JFrame, le damos
un nombre a la clase de la ventana y esperamos que el diseador nos genere el
cambas para disear los elementos de la ventana.

Vamos al panel llamado Paleta, ubicado al costado derecho de Netbeans, en su


interior buscamos un Control de Swing llamado Etiqueta o Label, lo arrastramos y
soltamos sobre el cambas de diseo de la ventana.
Repetimos el mismo paso pero ahora con un botn. Ahora cambiamos el nombre
de la variable generada para esta etiqueta y este botn, esto lo hacemos dando
clic derecho sobre el elemento deseado y seleccionamos la opcin Cambiar
Nombre de Variable.

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta

Paso 17: Agregar eventos a los elementos de la Ventana


Los elementos de una ventana se utilizan para mostrar o capturar informacin,
pero tambin se utilizan para capturar eventos generados por el usuario, con el fin
de realizar una determinada operacin o accin.
Para agregar eventos a un elemento de la ventana, hacemos clic derecho sobre el
elemento deseado, escogemos la opcin Eventos, seguida de la opcin
actionPerformed.

Netbeans genera el cdigo necesario para escribir la lgica de las acciones que se
desean ejecutar cuando se produzca el evento sobre el elemento deseado.

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta
El mtodo que se ejecuta automticamente cua ndo ocurra el evento tiene
siguiente forma:
public void nombreElementoActionPerformed( ActionEvent evento){
// aqui se debe escribir cdigo para realizar acciones
}
En este caso, lo que deseamos es que al ser pulsado el botonServicio se debe
ejecutar automticamente las siguientes acciones:

Comprobar el estado del servidor, el cual esta referenciado mediante una


propiedad llamada serv declarada e inicializada justo antes de la definicin del

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta
mtodo que maneja el evento (normalmente las variables propiedades se declaran
al comienzo del cuerpo de una clase).
Si el estado es falso, es porque el servidor est detenido, entonces se invoca el
mtodo que inicia el servicio y se cambia el texto del botonSerivicio a Detener,
indicando que el servidor esta Iniciado, de lo contrario se llama al mtodo
detenerServidor, el cual detiene el servicio, luego se cambia el texto del
botonServicio a Iniciar, para indicar que el servidor est Detenido
Paso 18: En la clase Principal que se genera automticamente cuando creamos el
proyecto, debemos indicar en el mtodo main o punto de inicio que lo primero que
se va a ejecutar cuando la aplicacin inicie es el cdigo para crear, centrar y
visualizar la ventana Principal

Paso 19: Ejecutar el Servidor.

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta
Por ltimo lo que nos queda es probar si el servidor iniciar esta dispuesto a
atender peticiones de los clientes, para ellos debemos ejecutar el programa
RMIRegister.exe el cual se encuentra generalmente en esta ruta (Windows):
C:\Program Files (x86)\Java\jre7\bin start rmiregister
Luego debe aparece una ventana del D.O.S la cual debe permanecer abierta
Por ultimo damos clic derecho sobre el icono del proyecto servidor y pulsamos
RUN

Paso 20: Construir el proyecto para el Cliente


Los pasos para hacer esto son los mismos que hicimos con el servidor.
Paso 21: Construir una clase llamada Cliente.

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta
Esta Clase es la encargada de iniciar la conexin con el servidor, es decir, en
trminos de RMI, es la clase que ubica al objetoRemoto por su nombre en la red
con el fin de poder invocar remotamente los mtodos.
Lo ms importante de esta clase es:

Importa las clases Necesarias, entre ellas las del paquete java.rmi
Importa la clase IConvertidroDivisas ubicada en la librera .jar que le
incluimos
Solicita la IP del servidor y la utiliza para buscar el Objeto Remoto por su
nombre en la red, cuando lo encuentra lo asigna a una variable de tipo
IConvertidorDivisas
Notificar o lanzar informacin sobre los errores que puedan ocurrir

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta

Paso 22: Crear una Ventana para ingresar los datos que se desean convertir a
otra moneda.
Este paso no difiere de los realizados en el servidor para este objetivo.
La diferencia es que esta ventana tendr ms elementos, como por ejemplo:
Dos Paneles con borde de titulo, tres etiquetas, un campo de texto, dos botones y
un combo de opciones desplegables.

Colocarle las opciones al combo desde las propiedades del JComboBox,


Se selecciona desde el cambas de diseo el combo de opciones, luego vamos al
su panel de Propiedades, seleccionar la propiedad modelo y agregar los item u
opciones un debajo del otro

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta

Cambiar la fuente y el formato del texto de las Etiquetas

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta
As va quedando

Paso 23: Agregar cdigo para el evento del botonConvertir

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta
Dar doble clic sobre el botonConvertir y agregar el cdigo de las acciones que se
deben ejecutar cuando se de clic en el botn.

Paso 24:
En la clase Principal que se genera automticamente cuando creamos el proyecto,
debemos indicar en el mtodo main o punto de inicio que lo primero que se va a
ejecutar cuando la aplicacin inicie es el cdigo para crear, centrar y visualizar la
Ventana Principal

Gua para trabajar con RMI sin Problemas en el IDE Netbeans


Ingeniero John Carlos Arrieta Arrieta

Limpiar y Generar el proyecto del cliente para obtener el una librera ejecutable .jar

También podría gustarte