RMI JAVA Implementación.

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Advertisements

Java nos ofrece System.out para escribir en pantalla, pero también tenemos System.in para leer. System.in es un objeto de una clase de java que se llama.
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
Herencia en C#.
Java Web Services Developer JAX-WS
22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.1 Clases y Objetos Silvia Larrayoz Leire Urriza.
APLICACIÓN DE EJEMPLO JAVA
Ejemplo de Hilos. public class RelojApplet extends Applet implements Runnable { Hereda applet y la clase Thread ( simula la herencia múltiple.
Entrada y salida Fundamentos de programación/Programación I
Un constructor es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar las variables.
Programación Concurrente en Java
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Práctica II: Java RMI.
Tema 5 - Servicios Web con Axis
Defina una clase TempMinMaxEst que encapsule la representación de las temperaturas mínimas y máximas registradas en una estación meteorológica y brinde.
Java RMI vrs. CORBA y el objeto Parallel CORBA
Monitor de Temperatura. OBJETIVO Monitoreo de Temperatura en Salas de Computo Elaborar graficas de comportamiento Envío de Alertas.
SOA conference. Qué es WCF Fundamentos de la Arquitectura WCF Adaptadores BizTalk WCF Novedades en BizTalk Demo.
Arquitectura CLARO-TECNOTREE CAPITULO 4: Excepciones
Capitulo 4 Excepciones.
Introducción a Remoting
Siguiente Excepciones Introducción. AnteriorSiguiente Definición Una excepción es un evento que ocurre durante la ejecución de un programa que desestabiliza.
Oracle y Java Continuación *
13/01/08Seminario de Bases de Datos1 Oracle y Java * * Tomado del curso de Francisco Moreno.
1 Entrada/Salida en Java Jaime Ramírez, Ángel Lucas González DLSIIS. Facultad de Informática Universidad Politécnica de Madrid.
Entornos orientados a objetos
RMI (Remote Method Invocation)
Sistema Nominal en Salud Configuración del SAP (SINOS LAN)
/*Desarrollar una solución que permita ingresar y almacenar el promedio de prácticas, la nota del examen parcial y la nota del examen final de todos.
Objetos Distribuidos – Aplicaciones RMI
1.Tecnología Java Instaladores necesarios Jdk->Para Desarrollo
Excepciones y archivos Info 033. Exception El término Exception es la palabra corta para la frase "evento excepcional." Definition: Una excepción es un.
Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.
Primer Programa en JAVA
Recursión Se dice que un método es recursivo si forma parte de sí mismo o se define en función de sí mismo. La recursión es un medio particularmente poderoso.
Lenguajes de Programación Tema 4. Paradigma Orientado a Objetos Java 1.5 Pedro García López
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Introducción a la Programación Orientada a Objetos Redefinición y Sobrecarga Dada la siguiente jerarquía de clases: Alfa Delta Beta.
Middleware Java 2 Enterprise Edition
Realizado por: Bertha Palomeque A. Rodrigo Barzola J. Sensor de Temperatura utilizando el Starter Kit Javelin Stamp.
Métodos Algoritmos y Desarrollo de Programas I. Cuando utilizar métodos  Los métodos se utilizan para romper un problema en pedazos de forma que este.
Estructuración y modularidad de los programas Fundamentos de Programación/ Programación I
Estructuras de Datos y Algoritmos TDA LISTA. Metáfora del TDA (repaso) Conjunto de operaciones forman una pared forman una interfase entre los programas.
El patrón de diseño Proxy Raúl Heras Alberto Blasco José Manuel Arévalo.
Java Mayra M. Méndez Anota.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Sistemas Operativos Centralizados y Distribuidos Carlos David Zepeda.
Public class MiClase { public static int tmp = 123; // miembro variable public static final double PI = ;// miembro constante public float.
1 Ingeniería del Software Ejercicios de Implementación  Caso de Uso Total Gasto (Junio 2003)  Caso de Uso Mejor Usuario (Septiembre 2003)  Caso de Uso.
1 TEMA 5. Seguridad en Java 1.Introducción a los Controladores de Seguridad 2.Decidir qué Métodos Sobreescribir del SecurityManager 3.Escribir un Controlador.
Suponiendo que además en la clase U hay: import java.util.*; class U{ static Scanner teclado = new Scanner(System.in); static public int readInt(String.
Sincronización de Objectos Compartidos usando MatchMaker a través de Web Services Thomas Pieper DCC, Universidad de Chile.
Invocación de Métodos Remotos RMI: Remote Method Invocation
3.  Recursividad.
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
Tema 11: Excepciones Antonio J. Sierra.
Introducción a Java (2ª parte) - excepciones, colecciones, i/o, … -
Tema VI: Java RMI Luis López Fernández.
Capítulo 5 - b: Hilos. 4.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Ejemplo de hilos: un applet Un.
RMI Remote Method Invocation 2da. Clase del 19 de Junio
Remote Method Invocation (RMI) Basado en: Fundamentals of RMI. Short Course. JGuru.
Cambiando la manera de diseñar aplicaciones distribuidas Diseño orientado a las comunicaciones: Primero se diseña el protocolo de las comunicaciones y.
Manuel I. Capel Tuñón Ramón A. Carrasco González
RMI: Invocación a método remoto, y Java RMI
ENTERPRISE JAVA BEANS. ACCESO AL EJB EJB_HOME. Accesible mediante JNDI. Permite crear y destruir EJB. EJB_OBJECT Expone los métodos del negocio del EJB.
Java RMI. Entornos orientados a objetos  Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan entre sí.  Un programa.
Exception Object Throwable Error Exception Runtime Exception.
Diseño y Programación Orientada a Objetos
Herencia en C#.
Transcripción de la presentación:

RMI JAVA Implementación

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.

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".

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.

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.

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

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

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;

Registrar metodo remoto start rmiregistry cd \myjava\rmi\server start java -Djava.rmi.server.codebase=http://localhost:8080/download/ CalcServer

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; }

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://127.0.0.1:1099/calculo"); System.out.println(c1.suma(8,5)); } catch(Exception e) { e.printStackTrace();

Policy grant { permission java.net.SocketPermission "127.0.0.1:1-65535", "connect"; "127.0.0.1:8080", "connect"; };

Estructura Server CalcServer (-Djava.rmi.server.codebase= http://localhost:8080/download/) Calc CalcImpl Download CalcImpl_Stub (rmic –keep) Client CalcClient Client.policy (seguridad)

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

Preguntas y respuestas Que es lo que sigue?