La plate-forme Java RMI



Documents pareils
Remote Method Invocation (RMI)

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Intergiciel - concepts de base

Remote Method Invocation Les classes implémentant Serializable

RMI le langage Java XII-1 JMF

Remote Method Invocation en Java (RMI)

Java RMI. Arnaud Labourel Courriel: Université de Provence. 8 mars 2011

Calcul Parallèle. Cours 5 - JAVA RMI

Conception de serveurs d'applications ouverts

Java - RMI Remote Method Invocation. Java - RMI

Java Naming and Directory Interface

Programmation répartie RPC & RMI

CORBA haute performance

Etude critique de mécanismes de sécurité pour l architecture Jini

Modèle client-serveur Plan. Modèle client-serveur. Modèle client-serveur définition. Modèle client-serveur communication par messages.

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

NFP111 Systèmes et Applications Réparties

Programmation réseau avec Java. 3/7 RMI, un peu de sécurité et CORBA

TP1 : Initiation à Java et Eclipse

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Intergiciels pour la répartition CORBA : Common Object Request Broker. Patrice Torguet torguet@irit.fr Université Paul Sabatier

Implementing a simple RMI Application over the Internet (using and comparing HTTP tunneling, RMI Proxy)

CORBA. (Common Request Broker Architecture)

Systèmes répartis. Fabrice Rossi Université Paris-IX Dauphine. Systèmes répartis p.1/49

TP1. Outils Java Eléments de correction

JOnAS Day 5.1. Clustering

GEI 465 : Systèmes répartis

Initiation à JAVA et à la programmation objet.

Dis papa, c est quoi un bus logiciel réparti?

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

La carte à puce. Jean-Philippe Babau

Projet gestion d'objets dupliqués

Développement, déploiement et sécurisation d'applications JEE

I-JVM: une machine virtuelle Java pour l isolation de composants dans OSGi

Programmation répartie: Objet distribué. CORBA (Common Object Request Broker Architectur)

Synchro et Threads Java TM

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Utiliser Java sans BlueJ

INITIATION AU LANGAGE JAVA

Présentation de Java. Olivier de Pertat IT GROUP

Programmation Objet Java Correction

Traitement de données

Auto-évaluation Programmation en Java

Composants Logiciels. Le modèle de composant de CORBA. Plan

Programmer en JAVA. par Tama

as Architecture des Systèmes d Information

Plan. Programmation par agents. Un agent mobile C est quoi?

Java DataBaseConnectivity

Web Tier : déploiement de servlets

Introduction à CORBA

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Plan du cours. Historique du langage Nouveautés de Java 7

Bases Java - Eclipse / Netbeans

.NET remoting. Plan. Principes de.net Remoting

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Java Licence Professionnelle CISII,

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Héritage presque multiple en Java (1/2)

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Premiers Pas en Programmation Objet : les Classes et les Objets

Java c est quoi? Java pourquoi?

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Applications des patrons de conception

La JVM. La machine virtuelle Java. La JVM. La JVM

Chapitre I Notions de base et outils de travail

Java Licence professionnelle CISII,

Environnements de développement (intégrés)

Objets et Programmation. origine des langages orientés-objet

Software Engineering and Middleware A Roadmap

Conception des systèmes répartis

Système de Virtualisation pour une application de gestion commerciale d entreprise

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

Généralités sur le Langage Java et éléments syntaxiques.

Une introduction à Java

2 Chapitre 1 Introduction

Application Web et J2EE

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Contribution à l allocation dynamique de ressources pour les composants expressifs dans les systèmes répartis

TP1 : Initiation à Java et Eclipse

La technologie Java Card TM

Architecture applicative et Cartographie

Programmation Orientée Objet

Environnements de Développement

Programmation Orientée Objet - Licence TIS CM8/9. Rappel sur la séance précédente. Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers.

Gestion distribuée (par sockets) de banque en Java

F. Barthélemy. 17 mai 2005

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Cisco Certified Network Associate

Programmeur Java 1.4 et 5.0

Environnement Client-Serveur

JOnAS 5. Serveur d application d

Java et les bases de données

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Transcription:

La plate-forme Java RMI Frank Singhoff Bureau C-202 Université de Brest, France Lab-STICC/UMR 3192 singhoff@univ-brest.fr UE systèmes à objets répartis, Université de Brest Page 1/25

Sommaire 1. Le modèle objets et les services de base. 2. Service de code mobile. 3. Résumé. 4. Références. UE systèmes à objets répartis, Université de Brest Page 2/25

Le modèle objet de Java /RMI Client Invocation interface Java Objet distant/serveur de type RemoteObject Machine virtuelle Machine virtuelle RMI [MIC 98, DOW 98, E.D 00] (Remote Method Invocation) = pouvoir invoquer un objet d une JVM autre que la JVM locale. Pas de prise en compte de l interopérabilité mais simple d utilisation. Pas de transparence à la localisation. Quasi transparence d accès : exceptions différentes, passage des objets locaux par copie (et non par référence, lorsque l invocation est locale), objets distants passées par référence (souches). UE systèmes à objets répartis, Université de Brest Page 3/25

Fonctionnement de la plate-forme Client Souche Serveur d objets Objet (RemoteObject) Machine virtuelle Threads Machine virtuelle Squelette JRMP ou IIOP (GIOP + TCP/IP) Protocole d acheminement des invocations sur TCP : IIOP ou JRMP a. Utilisation de souches et squelettes générés à partir de l interface de l objet. Serveur d objets : exécute les invocations d objets de façon multithread. Opération d activation = création du serveur d objets (thread d écoute). a Java Remote Methode Protocol. UE systèmes à objets répartis, Université de Brest Page 4/25

Désignation et service de nommage (1) rmiregistry Client lookup()/list() bind()/rebind() Objet distant/serveur Machine virtuelle Désignation : //machine : port/objet où objet constitue le nom symbolique désignant un RemoteObject et le port constitue l espace de désignation = pas de transparence à la localisation. Serveur de nom : commande rmiregistry. Phase de liaison : bind, rebind, unbind. Phase de résolution : lookup, list. La méthode lookup permet au client d obtenir une souche. UE systèmes à objets répartis, Université de Brest Page 5/25

Désignation et service de nommage (2) La classe statique N aming : public final class Naming { } public static Remote lookup(string nom) throws... public static void bind(string nom, Remote obj) throws... public static void unbind(string nom) throws... public static void rebind(string nom, Remote obj) throws... public static String[] list(string nom) throws... UE systèmes à objets répartis, Université de Brest Page 6/25

Support de l hétérogénéité 1. Système d exploitation et langage de programmation : machine virtuelle Java. 2. Codage/décodage, sérialisation/désérialisation 3. Services pour le code mobile. Ne capture pas le contexte d exécution d un thread. UE systèmes à objets répartis, Université de Brest Page 7/25

Autres services 1. Ramasse-miettes réparti pour les objets distants (de type RemoteObject). 2. Gestionnaire de sécurité (RM ISecurityM anager). 3. Archivage des invocations effectuées sur un objet (méthodes getlog/setlog). 4. Activation sur invocation d objets (rmid) ; activations dites permanentes. 5. Création ou recherche de serveurs de noms (classe LocateRegistry). 6.... UE systèmes à objets répartis, Université de Brest Page 8/25

Exemple : client/serveur (1) L interface (Hello.java) : public interface Hello extends java.rmi.remote { String liremessage() throws java.rmi.remoteexception; } Interface Java normale sauf : Héritage de java.rmi.remote = objet distant. Utilisation d exceptions spécifiques (RemoteException). UE systèmes à objets répartis, Université de Brest Page 9/25

Exemple : client/serveur (2) Le client (HelloClient.java) :... String nom="//machine:port/helloserveur"; Hello obj=(hello) Naming.lookup(nom) message=obj.liremessage();... Etapes effectuées par le client : 1. Consultation du service de nommage et obtention d une souche. 2. Invocation de l objet distant. UE systèmes à objets répartis, Université de Brest Page 10/25

Exemple : client/serveur (3) Le serveur (HelloServeur.java) : public class HelloServeur extends UnicastRemoteObject implements Hello { public String liremessage()... } public static void main... { HelloServeur MonServeur=new HelloServeur(); String nom="//machine:port/helloserveur"; Naming.rebind(nom, MonServeur);... } UE systèmes à objets répartis, Université de Brest Page 11/25

Exemple : client/serveur (4) Etapes effectuées par le serveur : 1. Déclaration d un objet distant HelloServeur qui implante l interface Hello. Objet de type U nicastremoteobject ou RemoteObject. 2. Fournir une implantation des méthodes invocables à distance. 3. Création de l objet. 4. Activation de l objet (création du serveur d objets) : activation effectuée par le constructeur de U nicastremotreobject. Si l on utilise un RemoteObject, il faut invoquer exportobject(). 5. Publication vers le service de nom. UE systèmes à objets répartis, Université de Brest Page 12/25

Exemple : client/serveur (5) Compilation : Générer les souches et squelettes avec la commande : rmic HelloServeur Compiler les sources Java. Exécution ; dans le même répertoire, lancer : Le serveur de nom par la commande : rmiregistry num où num est le numéro de port d écoute du serveur. Le serveur, puis le client par : java HelloServeur& java HelloClient UE systèmes à objets répartis, Université de Brest Page 13/25

Sommaire 1. Le modèle objets et les services de base. 2. Service de code mobile. 3. Résumé. 4. Références. UE systèmes à objets répartis, Université de Brest Page 14/25

Service de code mobile httpd Client HTTP methode() Objet distant/serveur ou autre (ex: rmiregistry) Machine virtuelle Machine virtuelle.class chargées, soit par le chargeur normal de la JVM (CLASSPATH), soit par un démon httpd = les fichiers doivent être accessibles au démon. Tout objet sérialisable est téléchargeable : souche (ex : rmiregistry) ou autre. Téléchargement à partir de (applet) ou vers le serveur. UE systèmes à objets répartis, Université de Brest Page 15/25

Exemple : agent mobile (1) migre(agent) migre(agent) Agent Agent Agent migre(agent) Site initiateur Fonctionnement : Hôte Hôte Une liste de sites, ou Hôtes, permettent l accueil d agents. Un agent part d un site Initiateur, puis, visite un ensemble d hôtes pour y effectuer un traitement donné. Finalement, l agent revient sur le site de départ pour rapporter ses résultats. UE systèmes à objets répartis, Université de Brest Page 16/25

Exemple : agent mobile (2) L interface de l agent : code + données mobiles import java.io.serializable; public interface Agent extends Serializable { void traitement(...); void afficheresultat(); String hotesuivant(); } Serializable indique que l objet, s il est utilisé en paramètre d une méthode, doit être sérialisé et encodé (marshalling). UE systèmes à objets répartis, Université de Brest Page 17/25

Exemple : agent mobile (3) L implantation de l agent : public class agentingredient implements Agent { private Float monprix = new... private String moningredient="";... public String hotesuivant()... public void afficheresultat()... } public void traitement(...)... UE systèmes à objets répartis, Université de Brest Page 18/25

Exemple : agent mobile (4) Le service de migration offert par les hôtes : import java.rmi.remote; import java.rmi.remoteexception; public interface Hote extends Remote { void migre(agent a) throws RemoteException; } Chaque hôte offre une interface permettant de recevoir un agent et de le lancer par un thread. UE systèmes à objets répartis, Université de Brest Page 19/25

Exemple : agent mobile (5) La mise en œuvre de migre : public void migre(agent a) { threadagent monthread = new threadagent(... monthread.start(); } Le thread, support de l agent : class threadagent extends Thread { public void run() { monagent.traitement(...); String lesuivant = monagent.hotesuivant(); Hote hote = (Hote) Naming.lookup(leSuivant); hote.migre(monagent); } } UE systèmes à objets répartis, Université de Brest Page 20/25

Exemple : agent mobile (6) Compilation : rmic et javac. Lancement de l hôte : java -Djava.rmi.server.codebase=http://... -Djava.rmi.server.hostname=beru.univ-brest.fr -Djava.security.policy=java.policy Hote_implem server.codebase = URL du serveur Web où les.class peuvent être chargées. server.hostname = localisation du serveur d objets. java.policy = fichier pour RMISecurityManager. Lancement du rmiregistry : doit forcer le serveur de nom à obtenir la souche par le serveur web = un objet sérialisé contient l URL permettant d obtenir le code, rien sinon (CLASSPATH). UE systèmes à objets répartis, Université de Brest Page 21/25

Sommaire 1. Le modèle objets et les services de base. 2. Service de code mobile. 3. Résumé. 4. Références. UE systèmes à objets répartis, Université de Brest Page 22/25

Conclusion et résumé Java RMI : permettre l invocation d objets d une JVM autre que la JVM locale. Plate-forme simple à utiliser. Quasi transparence d accès mais pas de transparence à la localisation. Pas d interopérabilité : de Java vers Java. Service de code mobile = nouvelles applications telles que agents mobiles, web. UE systèmes à objets répartis, Université de Brest Page 23/25

Sommaire 1. Le modèle objets et les services de base. 2. Service de code mobile. 3. Résumé. 4. Références. UE systèmes à objets répartis, Université de Brest Page 24/25

Références [DOW 98] G. Downing. Developing Java Distributed Applications with RMI. IDG Books, February 1998. [E.D 00] G. Roussel et E. Duris. JAVA et Internet : concepts et programmation. Vuibert Informatique, 2000. [MIC 98] Sun Microsystems. «Java Remote Invocation Specification». pages 1 124, 1998. UE systèmes à objets répartis, Université de Brest Page 25/25