Emprendedor

Solo disponible en BuenasTareas
  • Páginas : 5 (1078 palabras )
  • Descarga(s) : 0
  • Publicado : 20 de septiembre de 2010
Leer documento completo
Vista previa del texto
A. Ejemplo de aplicación RMI
En este apéndice se incluye una aplicación RMI con la que se observará el funcionamiento de la API.

A.1 Ejemplo completo de una aplicación con RMI
En este apartado se explicará, con un ejemplo concreto, los pasos seguidos para elaborar una aplicación con objetos distribuidos RMI. Esta aplicación ejemplo proporcionará un servicio que acepta peticiones de tareasconcretas especificadas por parte de los clientes. Es decir, cada cliente puede especificar la tarea que desea que el servidor le realice, utilizando para ello el paso de objetos serializados.
La figura A.1 muestra un esquema del proceso paso por paso en la elaboración de una aplicación RMI.[6]
|[pic]|
|Figura: Secuencia de pasos para programar aplicaciones RMI |

La secuencia indicada en la figura A.1 es la siguiente theenumialph@enumi theenumi)
1. En primer lugar se escribe la interfaz remota del servidor, que en este caso se llamará ejecutor. Toda interfaz remota debe declararse comopublic y debe extender la interfaz java.rmi.Remote. Además, esta interfaz debe definir los métodos que serán accesibles remotamente. Por último cada uno de estos métodos debe manejar la excepción java.rmi.RemoteException. La segunda interfaz necesitada para este ejemplo define el tipo Tarea. Este tipo es utilizado como un argumento del método ejecutar del interfaz ejecutor. Esta segunda interfazpermite definir desde el lado cliente la tarea (Tarea) que debe realizar el servidor y será pasada dinámicamente como argumento del método remoto. Observamos que la interfaz Tarea extiende el interfaz java.io.Serializable. RMI utiliza el mecanismo de serialización de objetos para transportar objetos entre máquinas virtuales. Tarea no es un objeto accesible remotamente, sino que es enviada por elcliente como argumento al servidor. En definitiva el objeto ejecutor del lado servidor queda a disposición de ejecutar tareas Tarea que le soliciten los clientes.
El código de la interfaz remota ejecutor es el siguiente:
package callback;
import java.rmi.*;
public interface ejecutor
extends Remote{
public String ejecutar(Tarea t) throwsRemoteException;
}
El código de la interfaz Tarea es el siguiente:
package callback;
import java.io.Serializable;
public interface Tarea extends Serializable{
public String recado();
}
La interfaz ejecutor contiene un único método ejecutar, que recibe como argumento un objeto de la clase Tarea, que es la interfaz definidapor el cliente. De esta forma el cliente implementa la tarea (de cálculo, por ejemplo) que desea realice el servidor. Para ello define el método recado.
2. Se implementa la interfaz remota. La clase que la implementa debe heredar de RemoteServer y lo habitual es hacerlo heredando de UnicastRemoteObject. El código de la implementación ejecutor_Imp es el siguiente:
3. package callback;4. import java.rmi.*;
5. import java.rmi.server.*;
6.
7. public class ejecutor_Imp extends UnicastRemoteObject
8. implements ejecutor {
9. protected ejecutor_Imp() throws RemoteException {
10. super();
11. }
12. public String ejecutar(Tarea t) throws RemoteException {
13. return t.recado();
14. }
15. }
Ésta esla implementación desde el lado servidor de la interfaz ejecutor. Utiliza el constructor de la clase de la que hereda, UnicastRemoteObject y define el método ejecutar(Tarea t), que devuelve la resolución del método recado() del objeto Tarea que ha sido pasado como parámetro.
16. Se generan los archivos stub y skeleton a partir de la clase que implementa la interfaz remota. Para ello se...
tracking img