Remote Method Invocation en Java (RMI)



Documents pareils
Remote Method Invocation (RMI)

RMI le langage Java XII-1 JMF

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

Calcul Parallèle. Cours 5 - JAVA RMI

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

Programmation répartie RPC & RMI

Remote Method Invocation Les classes implémentant Serializable

Intergiciel - concepts de base

Conception de serveurs d'applications ouverts

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

Java - RMI Remote Method Invocation. Java - RMI

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

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

Software Engineering and Middleware A Roadmap

NFP111 Systèmes et Applications Réparties

Introduction aux applications réparties

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

Programmer en JAVA. par Tama

GEI 465 : Systèmes répartis

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Java Naming and Directory Interface

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

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

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

Programmation Objet Java Correction

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

Architecture applicative et Cartographie

2 Chapitre 1 Introduction

Projet gestion d'objets dupliqués

Auto-évaluation Programmation en Java

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

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

Conception des systèmes répartis

TP1 : Initiation à Java et Eclipse

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

Plan du cours. Autres modèles pour les applications réparties Introduction. Mode de travail. Introduction

Description de la formation

Synchro et Threads Java TM

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

NSY102. Conception de logiciels Intranet Introduction

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

EXA1415 : Annotations

Étude de l interopérabilité de deux langages de programmation basée sur la machine virtuelle de Java

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

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

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Programmation Par Objets

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

Corrigé des exercices sur les références

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

Java 1.5 : principales nouveautés

Cours 1: Java et les objets

CORBA. (Common Request Broker Architecture)

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INITIATION AU LANGAGE JAVA

OS Réseaux et Programmation Système - C5

CORBA haute performance

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

Tolérance aux Fautes des Grappes d Applications J2EE. Applications Internet dynamiques

PROGRAMMATION PAR OBJETS

Architectures n-tiers Intergiciels à objets et services web

Classeur de suivi de l auditeur. Architecture et Ingénierie des Systèmes et des Logiciels

Création d une application JEE

Introduction aux intergiciels

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

JOnAS Day 5.1. Clustering

1. Introduction à la distribution des traitements et des données

F. Barthélemy. 17 mai 2005

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

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

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Vulgarisation Java EE Java EE, c est quoi?

TP1. Outils Java Eléments de correction

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

Initiation à JAVA et à la programmation objet.

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

Projet de programmation (IK3) : TP n 1 Correction

Programmation client-serveur sockets - RPC

Manuel d implémentation des Web Services Sous Axis1 et Axis2/Tomcat/linux. Par Pr Bouabid EL OUAHIDI

Architecture Orientée Service, JSON et API REST

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

LOG4430 : Architecture logicielle et conception avancée

Chapitre I Notions de base et outils de travail

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

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Tp 1 correction. Structures de données (IF2)

Création d un service web avec NetBeans 5.5 et SJAS 9

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Chapitre VI- La validation de la composition.

Une introduction à Java

Systèmes d'informations historique et mutations

Un ordonnanceur stupide

JAVA. Introduction à la programmation objet avec java 1/4. Nadir BOUSSOUKAIA

Chapitre 10. Les interfaces Comparable et Comparator 1

Bases Java - Eclipse / Netbeans

Étude et applications de l approche MDA pour des plates-formes de Services Web

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Présentation de Java. Olivier de Pertat IT GROUP

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

Transcription:

Remote Method Invocation en Java (RMI) Modélisation et construction des applications réparties (Module M-4102C) J. Christian Attiogbé Fevrier 2015 J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation en Java (RMI) 1 / 24 Introduction : Remote Method Invocation (RMI) RMI : extension objet de RPC Le mécanisme RMI est l extension aux concepts OBJET, du Remote Procedure Call (RPC). Principe général du RMI Le RMI permet, de la même manière que le RPC, d appeler une méthode sur une machine distante. La machine distante offre à travers une application, un objet O accessible à distance ; les méthodes de O sont ainsi appelées à distance par des applications dites clientes. La machine distante doit être connue des applications clientes. L objet offert à distance et ses méthodes doivent être connues des machines clientes. J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation en Java (RMI) 2 / 24

Principe du Remote Procedure Call Machine C Machine S Processus PC debut p(a, b,...) procedure p(...) fin Figure : Principe du RPC J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation en Java (RMI) 3 / 24 Intérêt et difficultés du RPC Structuration simple du code du client Abstraction du réseau Facilité des mises à jour Complexité de la gestion des paramètres Complexité de la sémantique Difficultés de gestion des pannes (clients ou serveur) Gestion des aspects hétérogénéité J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation en Java (RMI) 4 / 24

Mise en œuvre du RPC L interaction RPC est mise en œuvre par une structuration en couche. Machine C Processus PC p(a, b,...) communic. logique Machine S procedure p(...) 1 8 4 5 talon client liaison établie talon serveur 2 7 3 communic. physique 6 Figure : Interaction client/serveur avec RPC Pour que cela marche, le client doit donc connaitre l environnement du serveur. J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation en Java (RMI) 5 / 24 Mise en place de l environnement du serveur La procédure appelée à distance est au préalable publiée via un annuaire (serveur de noms : nomprocédure adrserveur, numport). L annuaire sera interrogé par les clients avant de pouvoir communiquer avec les serveurs. Machine C Processus PC p(a, b,...) communic. logique Machine S procedure p(...) 2 9 6 talon client 3 annuaire 1 talon serveur 4 8 communic. physique 7 5 Figure : Principe du RPC J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation en Java (RMI) 6 / 24

Remote Method Invocation en Java En Java, une application ordinaire s exécute dans la machine virtuelle locale. Dans le cadre des applications réparties, le mécanisme RMI permet d appeler et d exécuter une méthode dans une machine virtuelle distante, différente de celle de l application appelante. J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation en Java (RMI) 7 / 24 Principe du mécanisme RMI en Java Une application objet Java offre sur une machine distante un objet accessible à distance et dont les méthodes peuvent être invoquées. L application serveur, construit un objet accessible à distance, et l enregistre auprès d un serveur rmi, pour le rendre visible des applications clientes. Java offre pour cela le package java.rmi avec plusieurs sous-packages java.rmi.server, java.rmi.dgc,... J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation en Java (RMI) 8 / 24

Principe du mécanisme RMI en Java Au cœur du principe Java RMI se trouvent, d une part un objet accessible à distance OD (créé par le côté serveur), d autre part la classe stub (talon) qui représente l objet OD côté client et la classe skeleton (squelette) qui représente l objet OD côté serveur. L indépendance et la transparence des serveurs est réalisée par le mécanisme d annuaire rmi qui contient les objets publiés et les serveurs qui les publient. L exclusion mutuelle des accès aux objets est assurée par le mécanisme de synchronisation de Java Les applications clientes s adressent d abord à l annuaire rmi pour pouvoir établir le lien avec les serveurs d objets. J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation en Java (RMI) 9 / 24 Mécanisme Java RMI : Serveur Appli. serveur 1. création objet serveur de nom rmi 2. enregistrement Figure : Création et publication d un objet accessible à distance J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation en Java (RMI) 10 / 24

Mécanisme Java RMI : Client Appli. Client 1. demande objet 2. référence serveur de nom rmi Stub Figure : Récupération d une référence à l objet distant J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation en Java (RMI) 11 / 24 Méthode pour le client/serveur RMI en Java Appli. Client Appli. serveur appel/résultat echange execution/résultat Stub comm physique skel Figure : Interaction RMI via stub et skel J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation en Java (RMI) 12 / 24

Démarche : côté d une application serveur RMI 1 Créer un objet qu on souhaite rendre accessible à distance (nomobjetad) 2 Enregistrer l objet créé dans le registre de noms d un serveur, en attribuant à l objet une URL spécifique : rmi://nomouadresseserveur/nomobjetad Pour que l application serveur puissent enregistrer des objets et que les clients puissent accéder aux objets à distance, le registre de noms RMI (annuaire rmi) doit d abord être exécuté sur la machine serveur (il utilise le port 1099). rmiregistry & J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation en Java (RMI) 13 / 24 Création d un objet accessible à distance Tout objet accessible à distance hérite de la classe Java.rmi.Remote. Il s agit d une interface qui ne contient aucune méthode. On spécifie l interface de l objet accessible à distance en héritant de la classe Java.rmi.Remote puis en définissant les méthodes qu on souhaite rendre accessibles aux clients. Les communications réseaux pouvant échouer, on doit gérer les exceptions sur toutes les méthodes. /* fichier.java de la classe moninterfacedistant : Serveur */ import java.rmi.*; public interface moninterfacedistant extends Remote { /* une méthode de test */ public String getcode() throws RemoteException; } J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation en Java (RMI) 14 / 24

Implantation de l interface côté serveur Le serveur implémente son interface, avec le code java nécessaire. Le mécanisme Java RMI offre la classe UnicastRemoteObject qui contient les primitives permettant l appel de l objet distant ; par exemple, l appel par le stub du client qui est unique (le stub n a qu une seule référence sur l objet). La classe qui implémente l interface doit hériter de la classe UnicastRemoteObject. Le mécanisme Java RMI offre l utilitaire rmic pour générer le talon (stub) et le squelette (skeleton) à partir du bytecode (issu de la compilation java de la classe objet distant) javac moninterfacedistant.java // compilation interface javac monobjetaccessibledistance.java // compilation implémentation rmic monobjetaccessibledistance // génération stub et skel (...stub.class...skel.class) J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation en Java (RMI) 15 / 24 Implantation de l interface côté serveur /*.java de la classe monobjetaccessibledistance : Serveur */ import java.rmi.*; import java.rmi.server.*; public class monobjetaccessibledistance extends java.rmi.server.unicastremoteobject implements moninterfacedistant { /* constructeur */ public monobjetaccessibledistance () throws RemoteException { super ();} public String getcode() throws RemoteException { return "camarche"; } } J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation en Java (RMI) 16 / 24

Création et publication d un objet par le serveur Le mécanisme Java RMI offre la méthode rebind via la classe Naming pour enregistrer un objet dans le registre de nom du serveur. import... public class testserveurrmi {... //constructeur de la classe + Exception /* Création et enregistrement d un objet par l appli serveur */ public static void main (String[] args) throws RemoteException, MalformedURLException, UnknownHostException { monobjetaccessibledistance testsrvtprmi = new monobjetaccessibledistance(); // création de l obj try{naming.rebind("rmi://"+java.net.inetaddress.getlocalhost()+ "1099"+"/testSRVTPrmi",testSRVTPrmi); } catch (MalformedURLException ee) { throw new MalformedURLException("Pbm de url"); } // idem pour les autres catch } } J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation en Java (RMI) 17 / 24 Mise au point Serveur : les import /** * TP Java RMI - Appli Serveur 2014/2015 */ import java.rmi.*; import java.net.malformedurlexception; import java.net.unknownhostexception; public class testsrvtprmi { static public void testsrvtprmi() throws RemoteException {... } J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation en Java (RMI) 18 / 24

Méthode d accès à l objet, par le client RMI L application client, s adresse au serveur de noms auprès duquel l objet est enregistré ; elle utilise le nom complet rmi://adrserveur:numport/nomobjet/ Il récupère un stub (talon) de l objet, à l aide de la méthode lookup de la classe Naming. L objet récupéré est de la classe Remote. L objet doit être casté en la classe Interface qui définit les méthodes utilisables de l objet distant ; ensuite on appelle les méthodes. J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation en Java (RMI) 19 / 24 Méthode d accès à l objet, par le client RMI import java.rmi.*; /* clientrmi.java : coté client */... public class clientrmi { static public void clientrmi() throws RemoteException { } public static void main (String[] args) throws RemoteException,MalformedURLException, NotBoundException{ try { Remote monstub = Naming.lookup("rmi://"+ java.net.inetaddress.getlocalhost()+"1099"+"/testsrvtprmi"); if (monstub instanceof moninterfacedistant) { String lecode = ((moninterfacedistant)monstub).getcode(); System.out.println("code recupere = "+lecode); } catch (NotBoundException ee) { throw new NotBoundException("Pbm de liaison");} } // idem pour les autres catch exceptions } J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation en Java (RMI) 20 / 24

Conclusion Java RMI La technologie RMI (ici Java RMI) est un intergiciel (middleware basé sur les objets et qui permet de réaliser des applications distribuées en Java. Elle nécessite de bien penser son application et le partage de données (les objets acessibles à distance) à l avance. Technologie mature Bien intégrée dans les environnements Java (donc NON interopérable) Autre middleware non basé sur les objets : Message-Oriented Middleware (MOM) J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation en Java (RMI) 21 / 24 Ouvertures RMI dans d autres environnements RPyC (Rempote Python call) http://rpyc.readthedocs.org/, Scala + Java? (puisque Scala mange le Java, on doit pouvoir lui faire gober le Java RMI) RMI et interopérabilité Les Interopérables : Advanced Message Queuing Protocol http://www.amqp.org/ CORBA Babel Middleware (pour le calcul scientifique) https://computation.llnl.gov/casc/components/#page=home SWIG http://www.swig.org/,... J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation en Java (RMI) 22 / 24

Exercices : à volonté Modélisation à l aide de Réseaux de Petri + Client/Serveur de ressources (via le nom de la ressources)... Clients/Serveur de ressources avec des paramètres Clients/Serveur de classement, score,... de matchs (clients = équipes)... J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation en Java (RMI) 23 / 24 Références Sacha Krakowiak, Systèmes et Applications Réparties, Université Joseph Fourier A.S. Tannenbaum, Distributed Operating Systems Prentice Hall. Martin Quinson, Cours de Programmation d Applications Réparties A.D. Birell and B.J. Nelson, Implementing remote procedure calls ACM Trans. on Comp. Syst., vol. 2(1), 1984. Satyanarayanan, H. Siegel Parallel communication in a large distributed environment, ACM Trans. On Comp, vol 39(3), 1990 http: //docs.oracle.com/javase/tutorial/rmi/overview.html http://stackoverflow.com/questions/28892535/ java-rmi-client-server-on-different-machines J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation en Java (RMI) 24 / 24