Programmation Objet en JAVA Cours 9 : Réseau R. M

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

Le struts validator – framework de validation
Invocation de Méthode à des Objets distants RMI et Corba
Plan de l’enseignement
ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
Harmonisation AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
Retour sur RMI.
1 Plan de lenseignement Cours Introduction au réseau via les objets distants (Application à RMI) Ce que cache RMI : programmation socket – mode connecté
Des sockets à RMI Programmation réseau versus programmation objet
ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
Module SI4 Applications réparties
Des sockets à RMI. Pourquoi ? Maturation de la technologie orientée objet –ADA, Modula –Smalltalk, C++, Java Maturation des communications Client- Serveur.
Introduction aux applications réparties
Module Systèmes dexploitation Chapitre 6 Communication Interprocessus Partie III École Normale Supérieure Tétouan Département Informatique
GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)
Object Management Architecture (OMA)
Exposé de Système - Informatique et Réseau
Plan du cours La sérialisation: – comment stocker et restaurer les Objets? Les interfaces graphiques et la programmation évènementielle. –Comment concevoir.
Cours 5.3 : XML et les architectures N-tiers – Tier Présentation
51 Les technologies XML Cours 6 : XML et les architectures N-tiers – Tier Métier Janvier Version 1.0 -

TP 3-4 BD21.
Principes de programmation (suite)
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
Etude des Technologies du Web services
Programmation orientée objet
XML-Family Web Services Description Language W.S.D.L.
Java Remote Method Invocation (RMI)
Applications Chapitre B17 et C18
Programmation Approche composants Ing5 SI
IFT1025, Programmation 2 Jian-Yun Nie
CAT 2000 LES MIDDLEWARES Présenté par : Tagmouti Siham Smires Ali
.Net Remoting.
Interopérabilité JOnAS - CORBA
Cours 12 Contenu du cours : RMI : a quoi ca sert Comment ca marche
PROJET DE GENIE LOGICIEL 2005
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 1 : Introduction.
Java et les appels de méthodes distantes
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Présentation de CORBA et de IIOP
PHP 5° PARTIE : LES COOKIES
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Systèmes distribués Plusieurs technologies existent : Les sockets
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Enterprise Java Beans 3.0 Cours INF Bases de Données Hiver 2005, groupe 10 Stefan MARTINESCU.
Metro Web Services Ben Yaflah Marouen Dhrif Mohamed Hbib Hajlaoui Nader.
Advisor Advanced IP Présentation Télémaintenance Télésurveillance.
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
Les sockets.
Les RPC remote procedure call
Master 1 SIGLIS Intégration des données dans l’entreprise Stéphane Tallard JDBC: Java Database Connectivity Master 1 SIGLIS1JDBC.
Ingénierie des réseaux - Chapitre 2 bis Les sockets en Java
Java RMI: Remote Method Invocation
Master 1 SIGLIS Systèmes d’Information pour l’entreprise – Java RMI Stéphane Tallard Mise en œuvre de l’exemple Bonjour RMI Master 1 SIGLIS1 Intégration.
Les Servlets Présentation Cycle de vie Principe de fonctionnement
PaCO++ André Ribes Réunion Hydrogrid Rennes 15/09/03.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 2 – Java Premiers pas Master 1 SIGLIS1 Java Lecteur - Chapitre 2 - Java Premiers Pas.
Service de vidéo à la demande Projet Tutoré : Groupe C3 Université Paris 5.
Architecture Client/Serveur
CPI/BTS 2 Programmation Web Les sites dynamiques Prog Web CPI/BTS2 – M. Dravet – 02/10/2003 Dernière modification: 02/10/2003.
1 Démo SoftGrid. Le Séquenceur SoftGrid Utilisation d’un « packageur » SoftGrid Possibilité de “séquencer” en ligne de commande (CLI) Existence d’outils.
L. Gurret – M. Herve – P. Mignon – J. Prarioz. Introduction  Dernière étape d’analyse  Cahier des charges, spécifications et conception orientée objet.
Remote Method Invocation
Présentation Notre intention est créer un système qui compense en temps réel les délais et l’atténuation du son, correspondant à la distance entre la.
Java Remote Method Invocation
Chapitre8 Configuration de l'adressage TCP/IP et de la résolution de noms Module S41.
Parquet Geoffrey 3 ARIL EXIA.CESI ARRAS. Présentation du MLD Présentation de la persistance Présentation récapitulatif du projet JSP/SERVLET MVC Cycle.
Sockets/rmi - Y. Bekkers1 Applications réparties en Java Paquetage java.net – Sockets Objets distants transparents – RMI Yves Bekkers.
Transcription de la présentation:

Programmation Objet en JAVA Cours 9 : Réseau R. M Programmation Objet en JAVA Cours 9 : Réseau R.M.I : Remote Method Invocation (révision du cours de Patrick Itey INRIA-Sophia)

Plan

abstract class JoueurGeneric implements Joueur Le morpion en package Au sein d’un package, la communication avec l’extérieur ne doit pas présumer de l’implémentation. Les interfaces sont une solution. moteur ui PartieMorpion JoueurHumain JoueurHumainG JoueurGeneric Jeu Joueur JoueurMachine interface abstract class JoueurGeneric implements Joueur

Exemple du morpion (suite) Peut être un JoueurHumain ou un JoueurIA, via l’implémentation de l’interface Joueur x2 Jeu Joueur Partie L’implémentation du Joueur est fournie par un autre package Ce package peut être réalisé indépendamment. Répartition du travail Intégration du code garantie !

Morpion : Passage au réseau Association de deux architecture. Moteur/UI VS Client/Server Association possible : Moteur et Server Client et UI Le moteur converse avec un joueur, pas avec un server ou un client. Du point de vue du moteur, un interlocuteur : le joueur. Le joueur masque, englobe le réseau

Morpion architecture « locale » UI JoueurHumain UI JoueurGeneric JoueurHumainG Jeu Joueur Partie Le moteur

Morpion architecture réseau UI : user interface UI JoueurNetwork Réseau Jeu Joueur Partie

Morpion architecture réseau UI : user interface UI JoueurNetwork Réseau JoueurNetwork implémente l’interface Joueur et assure l’interaction utilisateur. Relais d’information entre l’utilisateur et le moteur : transmets à l’UI le nécessaire à afficher, transmets au moteur les «  ordres » de l’utilisateur Le réseau est traité dans les classes UI et JoueurNetwork, comment ? Le JoueurNetwork attend la connexion de l’ UI avec un ServerSocket. La communication peut se faire soit via un flux de caractères (txt, xml, ...), soit en serialisant des objets, soit les 2.

Morpion avec des sockets UI : user interface UI JoueurNetwork Réseau Dépliage Pliage Socket + InputStream Socket + OutputStream

Morpion avec serialization : objet distribué UI : user interface JoueurHumainG Jeu Réseau Dépliage Pliage Socket + InputStream Socket + OutputStream

Le réseau comme un système distribué L’idéal serait d’avoir un système distribué utilisant la technologie objet : Invoquer une méthode d’un objet se trouvant sur une autre machine exactement comme s’il se trouvait au sein de la même machine et du même JRE : objetDistant.methode(); Utiliser un objet distant (OD), sans savoir où il se trouve : objetDistant= ServiceDeNoms.recherche("monObjet"); Pouvoir passer un OD en paramètre à une méthode locale ou distante : resultat = objetLocal.methode(objetDistant); resultat = objetDistant.methode(autreOD); ObjetDistant = ObjetDistant.methode() ;

RMI (Remote Method Invocation) Un système d’objets distribués performant destiné au développement d’applications distribuées entièrement en Java. RMI est une core API (intégré au JDK 1.1) gratuit (différent de CORBA) et 100 % Java. RMI propose un système d’objets distribués plus simple que CORBA. RMI est uniquement réservé aux objets Java.

RMI : présentation Mécanisme permettant l’appel de méthodes entre objets Java s’exécutant sur des machines virtuelles différentes (espaces d’adressage distincts), sur le même ordinateur ou sur des ordinateurs distants reliés par un réseau; utilise directement les sockets, mais c’est déjà fait; code ses échanges avec un protocole propriétaire : R.M.P. (Remote Method Protocol).

RMI : objectifs Rendre transparent l’accès aux objets distribués via le réseau Faciliter la mise en oeuvre et l’utilisation d’objets distants Java Préserver la sécurité (inhérent à l’environnement Java) RMISecurityManager Distributed Garbage Collector (DGC)

RMI : principes Un objet distant (server) : ses méthodes sont invoquées depuis une autre JVM (autre processus distant ou local) L’objet distant est décrit par une interface (ou plus) : déclaration des méthodes distantes utilisables par le client.. Une invocation distante (RMI) concerne une méthode d’un objet distant via l’interface distante. Du coté client, un objet distant se manipule comme un objet local.

Distribution d’objets Une référence à un OD peut être passée en argument ou retournée en résultat d’un appel dans toutes les invocations (locales ou distantes). Un OD peut être transformé (cast) en n’importe quelles interfaces distantes supportés par l’implémentation de l’objet. Les clients (objets clients) des OD (objets serveurs) interagissent avec des interfaces distantes, jamais directement avec leurs implémentations. Les arguments locaux et les résultats d’une invocation distante sont toujours passés par copie et non par référence leurs classes doivent implémentés Serializable.

RMI : le passage des paramètres L’argument ou la valeur de retour d’une méthode distante peut être de n’importe quel type « Java » (types primitifs, classes locales ou distantes). Si jamais le type n’est pas disponible localement, il est chargé dynamiquement (RMIClassLoader) pour les paramètres locaux, le transfert se fait nécessairement par copie. Pour un objet, l’ensemble de ses variables est « sérilializé » (Serializable). Pour les références d’un OD, l’objet amorce (Stub) est passé.

RMI : usage des interfaces L’interface est le contrat (abstrait) liant objets serveurs et clients. Elle est destinée à être implémentée par l’OD et constitue la base d’appel pour les objets clients. Elle définie les signatures (noms, types de retours, paramètres) d’un ensemble de méthodes et seules ces méthodes seront accessibles par un objet client. Pour RMI, l’interface de départ est java.rmi.Remote : Héritons pour définir nos interfaces !

RMI : Exception L’exception RemoteException Les objets clients doivent traiter des exceptions supplémentaires comme RemoteException. Toute invocation distante de méthode doit lever ou traiter cette exception. Peut se produire si la connexion a été interrompue ou si le serveur distant ne peut être trouvé.

RMI : architecture JVM1 JVM2 Client Server Réseau Stub / Amorce Stub /(Skeleton) Couche de références des objets (rmiregister) Couche de transport (connexion des JVMs)

Objets Amorces Programmes adaptateurs pour le transport des appels distants Réalisent les appels sur la couche réseau pliage / dépliage des paramètres A une référence d’OD manipulée par un client correspond une référence d’amorce Les amorces sont générées par le compilateur d’amorces : rmic Deux types d’amorces pour l’interface avec le réseau (sérialisation): stub : représentant local (chez le client) de l’objet distant. skeleton : adaptateur coté server.

Couches « réseau » La couche des références distantes : Permet l’obtention d’une référence d’objet distant à partir de la référence locale au Stub Ce service est assuré par le lancement du programme rmiregister. Lancer qu’une fois par JVM, pour tous les objets à distribuer une sorte d’annuaire/connecteur de service distants. La couche de transport Connecte les 2 espaces d’adressage (JVM) Suit les connexions en cours : écoute et répond aux invocations. Construit une table des OD disponibles et réalise l’aiguillage des invocations.

Etapes de développement Définir une interface Java pour l’objet distant Créer et compiler une classe implémentant cette interface Créer et compiler une application serveur RMI Créer les classes Stub (et Skeleton) (rmic) Démarrer rmiregister et lancer l’application serveur RMI. Créer, compiler et lancer le client accédant à des OD du serveur

Un exemple : l’echo Un objet permettant de faire l’echo au message qu’on lui envoie : Echo ec; ec.echo(‘’coucou’’); Echo : coucou L’objet de type Echo est distant, l’évocation de la méthode (et de l’objet) et distante. 4 classes sont nécessaires : Echo: l’interface décrivant l’objet distant EchoDistant : l’implémentation de l’objet distant EchoServer : une application serveur RMI MainClient : l’application cliente utilisant

Interface Echo Attention à : java.rmi.RemoteException

EchoDistant, implémentation de Echo. Après la compilation, il faut générer le stub (et Skeleton) : rmic echo.EchoDistant;//dans le repertoire au-dessus On obtient alors le fichier : echo.EchoDistant_Stub.class On peut spécifier un autre répertoire «  -d » Compiler pour l’ancienne version (avec Skeleton) ... regarder man rmic.

Application server pour l’objet Distant Le programme qui est à l’écoute des demandes des clients. Il lui faut un SecurityManager spécifique : RMISecurityManager Pour rendre l’objet disponible, il faut l’enregistrer dans le RMIregistry via la méthode statique : Naming.rebind("echo", od); Par la suite, cet objet distant est accessible en indiquant son URL String url= "rmi://nomServeurRMI:port/nomOD" String url= "rmi://leo.inria.fr/echo" Pour interroger le serveur : Naming.lookup(url);

Lancer le server et le service d’annuaire > rmiregistery & > java demo.rmi.EchoServer Le serveur est désormais disponible pour de futurs clients ... . Attention à l’ordre et au « & » !

Le client Remarquons : Ce code manipule l’objet distant comme s’il était local. Après avoir installé un RMISecurityManager, le client recherche l’objet distant en interrogeant le service d’annuaire RMI par : Naming.lookup(url);