La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

RMI JAVA Implementación.

Presentaciones similares


Presentación del tema: "RMI JAVA Implementación."— Transcripción de la presentación:

1 RMI JAVA Implementación

2 Características Bajar dinámicamente componentes de java de un URL a JVM, ejecutándose en un proceso diferente. RMI baja y ejecuta el bytecode de clases que no están instaladas en el disco. RMI baja los clases especializadas stub, que habilita las llamadas a métodos remotos. La noción de codebase origina el uso de ClassLoaders en java. Una de las capacidades más significativas de la plataforma de JavaTM es la capacidad de descargar dinámicamente el software de Java de cualquier localizador Uniforme del recurso (URL) a una máquina virtual de Java * (JVM) funcionando en un proceso separado, generalmente en un diverso sistema físico. El resultado es que un sistema alejado puede funcionar un programa, por ejemplo un applet, que nunca no ha estado instalado en su disco. Para las secciones primeras de este documento, el codebase con respecto a applet será discutido para ayudar a describir codebase con respecto a la invocación alejada del método de Java (RMI). Por ejemplo, un JVM que funciona dentro de un web browser puede descargar los bytecodes para las subclases de java.applet.Applet y cualquier otro clasifica necesario por ese applet. El sistema en el cual el browser está funcionando nunca ha funcionado muy probablemente este applet antes, ni lo ha instalado en su disco. Una vez que todas las clases necesarias se hayan descargado del servidor, el browser puede comenzar la ejecución del programa del applet usando los recursos locales del sistema en el cual el browser del cliente está funcionando. Java RMI se aprovecha de esta capacidad para descargar y para ejecutar clases y en los sistemas donde esas clases nunca no han estado instaladas en disco. Usando el RMI API cualquier JVM, no solamente ésos en browsers, puede descargar cualquier archivo de la clase de Java incluyendo las clases especializadas del trozo del RMI, que permiten la ejecución del método invitan un servidor alejado usando los recursos de sistema del servidor.

3 ClassLoader Los ClassLoaders necesitan saber la ubicación en donde va a serle permitido carga la clase. Es usado en conjunción con un servidor HTTP que contiene las clases compiladas. Un codebase se puede definir como una fuente, o lugar, de el cual cargar clases en una máquina virtual de Java. Por ejemplo, si usted invitara a nuevo amigo encima para la cena, usted necesitaría dar que las direcciones del amigo al lugar en donde usted vivió, de modo que él o ella pudiera localizar su casa. Semejantemente, usted puede pensar en un codebase como las direcciones que usted da a un JVM, así que puede encontrar sus clases [ potencialmente alejadas ]. Usted puede pensar en su CLASSPATH como "codebase local", porque es la lista de lugares en el disco de el cual usted carga clases locales. Al cargar clases de una fuente disk-based local, se consulta su variable de CLASSPATH. Su CLASSPATH se puede fijar para llevar nombres del camino relativo o absoluto los directorios y/o los archivos de los archivos de la clase. Tan apenas pues CLASSPATH es una clase de "codebase local", el codebase usado por los applet y los objetos alejados puede ser pensado en como "codebase alejada".

4 Codebase Es la fuente o lugar desde donde se descargan clases a un JVM. CLASSPATH es un codebase local. La noción de un codebase origina del uso de ClassLoaders en el lenguaje de programación de Java. Cuando un programa de Java utiliza un ClassLoader, ese cargador de la clase necesita saber el location(s) de el cual debe ser permitido cargar clases. Generalmente, un cargador de la clase se utiliza conjuntamente con un servidor del HTTP que esté sirviendo encima de las clases compiladas para la plataforma de Java.

5 RMI Usando RMI aplicaciones pueden objetos remotos que aceptan llamada a métodos desde otros clientes en otros JVM. El cliente para que pueda invocar un método remoto necesita una manera de comunicarse. RMI usa una clase especial llamada stub, que es bajada del codebase. Usando el RMI, los usos pueden crear los objetos alejados que aceptan llamadas del método de clientes en el otro JVMs. En la orden para que un cliente llame métodos en un objeto alejado, el cliente debe tener una manera de comunicarse con el objeto alejado. Más bien que teniendo que programar al cliente hablar el protocolo del objeto alejado, RMI utilizan las clases especiales llamadas los trozos que se pueden descargar al cliente que se utiliza para comunicarse con (haga el método invita) el objeto alejado. El valor de característica de java.rmi.server.codebase representa unas o más localizaciones del URL de las cuales estos trozos (y cualquieres clases necesitadas por los trozos) puedan ser descargados. Como applet, las clases necesitaron ejecutar llamadas alejadas del método se pueden descargar del "archivo los:///" URLs, pero como los applet, un "archivo los:///" El URL requiere generalmente que el cliente y el servidor residan en el mismo anfitrión físico, a menos que el sistema de ficheros referido por el URL se haga disponible con un cierto otro protocolo, tal como NFS. Generalmente, las clases necesitaron ejecutar llamadas alejadas del método se deben hacer accesible de un recurso de la red, tal como un HTTP o un ftp server.

6 1.El codebase del objeto alejado es especificado por el servidor del objeto alejado fijando la característica de java.rmi.server.codebase. El servidor del RMI coloca un objeto alejado, límite a un nombre, con el registro del RMI. El sistema del codebase en el servidor JVM se anota a la referencia alejada del objeto en el registro del RMI. 2.El cliente del RMI solicita una referencia a un objeto alejado nombrado. La referencia (el caso del trozo del objeto alejado) es lo que utilizará el cliente hacer las llamadas alejadas del método al objeto alejado. 3.El registro del RMI vuelve una referencia (el caso del trozo) a la clase solicitada. Si la definición de la clase para el caso del trozo se puede encontrar localmente en CLASSPATH del cliente, que se busca siempre antes del codebase, el cliente cargará la clase localmente. Sin embargo, si la definición para el trozo no se encuentra en CLASSPATH del cliente, el cliente procurará recuperar la definición de la clase del codebase del objeto alejado. 4.El cliente solicita la definición de la clase del codebase. El codebase las aplicaciones del cliente es el URL que fue anotado al caso del trozo cuando la clase del trozo fue cargada por el registro. Detrás en el paso 1, el trozo anotado para el objeto exportado entonces fue colocado con el registro del RMI limitado a un nombre. 5.La definición de la clase para el trozo (y cualquier otro class(es) que necesite) se descarga al cliente. Nota: Los pasos 4 y 5 son las medidas de los sames que el registro llevó la carga a clase alejada del objeto, cuando el objeto alejado estuvo limitado a un nombre en (colocado con) el registro del RMI. Cuando el registro procuró cargar la clase del trozo del objeto alejado, solicitó la definición de la clase del codebase asociado a ese objeto alejado. 6. Ahora el cliente tiene toda la información que necesita para invocar métodos alejados en el objeto alejado. El caso del trozo actúa como poder al objeto alejado que existe en el servidor; tan desemejante del applet que utiliza un codebase para ejecutar código en su JVM local, el cliente del RMI utiliza el codebase del objeto alejado para ejecutar código en otro, JVM potencialmente alejado

7 Server public class CalcServer{
public static void main(String args[]){ try { CalcImpl cal = new CalcImpl(); Naming.rebind("calculo", cal); } catch(Exception e){ e.printStackTrace();

8 Implementacion public class CalcImpl extends UnicastRemoteObject
implements Calc { public CalcImpl() throws RemoteException { operador1 = 0; operador2 = 0; } public double suma(double x, double y) throws RemoteException { operador1 = x; operador2 = y; return operador1 + operador2;

9 Registrar metodo remoto
start rmiregistry cd \myjava\rmi\server start java -Djava.rmi.server.codebase= CalcServer

10 Interfase import java.rmi.*; public interface Calc extends Remote {
double suma(double x, double y) throws RemoteException; double resta(double x, double y) throws RemoteException; double multiplica(double x, double y) throws RemoteException; double divide(double x, double y) throws RemoteException; }

11 Cliente public class CalcClient {
public static void main(String[] args) { System.setProperty("java.security.policy", "client.policy"); System.setSecurityManager(new RMISecurityManager()); try { Calc c1 = (Calc)Naming.lookup ("rmi:// :1099/calculo"); System.out.println(c1.suma(8,5)); } catch(Exception e) { e.printStackTrace();

12 Policy grant { permission java.net.SocketPermission
" : ", "connect"; " :8080", "connect"; };

13 Estructura Server CalcServer (-Djava.rmi.server.codebase= Calc CalcImpl Download CalcImpl_Stub (rmic –keep) Client CalcClient Client.policy (seguridad)

14 Conclusión Deshabilitar las NIC que no se utilizan.
Ejecutar start rmiregistry en el DOS shell. Verificar permisos en policy file Instalar un WEB server (apache). Deshabilitar/reconfigurar firewall

15 Preguntas y respuestas
Que es lo que sigue?


Descargar ppt "RMI JAVA Implementación."

Presentaciones similares


Anuncios Google