Masters IIGLI et ILGII – Intranet internet extranet – 2006-2007 – Claude Montacié 1 Cours n° 7 Appel de procédures à distance.

Slides:



Advertisements
Présentations similaires
Cours n° 7 Standard Template Library II.
Advertisements

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 1 Cours n° 8 Langage HTML.
Le mécanisme des exceptions
A propos de java Sun, fin 1995 C++ nettoyé semi-interprété
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é
1 I. Bus logiciel ? Mireille Blay-Fornarino Daprès et Sacha Et (cf. références en bas.
ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
Objets Distribués Chronique d ’une invasion annoncée
Des sockets à RMI.
À travailler seuls Département SI AM Dery Concepts généraux
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Introduction aux applications réparties
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
1 Les technologies XML Cours 3 : Les Web Services – Implémentation – JAX-WS Février Version 1.0 -
1 Les technologies XML Cours 4 : Les Web Services et XML- RPC Février Version 1.0 -
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
HTML Les types de balises
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance


TP 3-4 BD21.
Servlet JAVA.
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
JAVA RMI Remote Method Invocation
Principes de programmation (suite)
Etude des Technologies du Web services
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Java Remote Method Invocation (RMI)
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Structures de données IFT-2000
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Programmation concurrente
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
RPC / MOM : Comparaison.
COURS DE PROGRAMMATION ORIENTEE OBJET :
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é.
99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
1111 Gestion des exceptions Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions.
Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 1 Cours n° 3 Polymorphisme I.
1212 Entrée et sortie de fichiers Objectifs À la fin de ce cours, vous serez capables de : • Lire à partir de la console • Écrire sur la console.
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
SGBD orientés Objet Standards : OMG et ODMG.
Présentation de CORBA et de IIOP
CENTRALISATION DES CANDIDATS LOCATAIRES
1 Architecture orientée service SOA Architecture orientée service SOA (Service Oriented Architecture)
4 Introduction des objets. Les chaînes et tableaux
La notion de type revisitée en POO
Systèmes distribués Plusieurs technologies existent : Les sockets
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 1 Cours n° 10 Accès distant aux bases de données.
Entrées / Sorties.
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.
Java RMI: Remote Method Invocation
22 Concepts de base du langage Java. 2-2 Objectifs A la fin de ce cours, vous serez capables de : Identifier les éléments essentiels de Java Identifier.
Langage de Programmation Orientée Objet : C++
pour les programmeurs en C++ Java 2 Part 1 3 Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé.
SOAP et les RPC XML SOAP WSDL RPC. Rappels sur le XML Langage avec des balises Très lisible Pour stocker des données Séparation entre contenu et présentation.
L. Gurret – M. Herve – P. Mignon – J. Prarioz. Introduction  Dernière étape d’analyse  Cahier des charges, spécifications et conception orientée objet.
Java Remote Method Invocation
BlueJ_III 1 Java, les objets : tout de suite ! Interaction entre objets Notes de cours associées au chapitre 3 tutorial BlueJ
Transcription de la présentation:

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 1 Cours n° 7 Appel de procédures à distance

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 2 1.Le protocole RPC (Remote Procedure Call)  Mécanismes et services  Flots de description XDR  Développement d’applications 2.Les packages RMI (Remote Method Invocation)  Interface et classe serveur  Registre des noms et lancement du serveur Sommaire

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 3 INTRODUCTION INTRODUCTION Bibliographie Bibliographie Jean-Marie Rifflet & Jean-Baptiste Yunes, UNIX : Programmation et communication, Dundod, 2003 R. Srinivasan, RPC: Remote Procedure Call Protocol Specification Version 2, RFC 1831, 1995 W. Harold, Using Extensible Markup Language-Remote Procedure Calling (XML-RPC) in Blocks Extensible Exchange Protocol (BEEP) RFC 3529, 2003 William Grosso, Java RMI, O’Reilly, 2006 java.sun.com/javase/technologies/core/basic/rmi/

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 4 1 PROTOCOLES RPC Introduction Mécanisme permettant d’appeler des fonctions sur un système distant Syntaxe similaire à celle des appels locaux Utilisation quasi transparente Histoire et Implémentation 1976 : Première description de services distants dans la RFC : Première implémentation par la société Apollo sous le système Unix 1984 : Normalisation par l’OSF de Distributed Computing Environment / RPC 1985 : Réécriture par Microsoft de DCE/RPC (version MSRPC) 1988 : Description dans la RFC 1050 par la société SUN (version 1) 1995 : RFC 1831 (Sun RPC version 2) 1998 : XML-RPC

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié MECANISMES ET SERVICES Schéma de communication Client Demande d’exécution d’une procédure RPC, Attente de la réponse, Réception de la réponse Serveur Réception d’une requête RPC, Appel de la procédure demandée, Envoi de la réponse Réseau Transmission de la requête, Transmission de la réponse

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié MECANISMES ET SERVICES Déclaration du service Entête d’un message Identificateurs de requête et de service (96 bits) Localisation d’un service (client) Appel au démon portmap (port 111) sur le serveur avec en paramètre l’identification du service, retourne le port correspondant au service Enregistrement du service (serveur) Appel au démon portmap avec en paramètre l’identification et le port correspondant au service, Mise à jour d’une table de correspondance Serveur inetd Serveur de serveur RPC Création du serveur en cas de demande, Gain en place mémoire (+), Plus faible réactivité (-)

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié MECANISMES ET SERVICES Interface de communication Stub (Talon) Interface de communication, client stub + serveur stub Client stub (adaptateur client) Simulation d’une procédure locale, Encapsulation des arguments d’appel, Envoi au serveur stub sous forme de messages, Réception du message résultat, retourne le résultat Serveur stub (adaptateur serveur ou squelette) Décodage du message envoyé par le client stub, exécution de la procédure demandée avec les arguments d’appel, récupération et encapsulation du résultat, renvoi au client stub sous forme d’un message

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié FLOTS DE DESCRIPTION XDR Filtres et Flots XDR [RFC 1832] Normalisation des échanges de données binaires Représentation binaire différente (format, taille, ordre) Alignements des champs d’une structure XDR (eXternal Data Representation) Norme pour la description et le codage des données, Indépendant des architectures matérielles et logicielles Codage sur des mots de 32 bits (Complétion par des 0, format big-endian, IEEE) Pas de codage du type Filtres XDR (Procédure codant ou décodant un type de données) Types de base du langage C/C++,tableaux et pointeurs, union (pas d’objet) Flots XDR (Suite d’octets représentant des données au format XDR) Gestion à l ’aide d’un pointeur sur une structure XDR, Trois opérations sur un flot : Encodage des données sur un flot (XDR_ENCODE) Décodage des données d’un flot (XDR_DECODE) Libération de la mémoire alloué pour un décodage (XDR_FREE) Flots d’entrées-sorties standard, en mémoire, d’enregistrements

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié DEVELOPPEMENT D’APPLICATIONS Trois méthodes de développement 1) Générateur d’applications RPCGEN Génération d’un client stub, d’un serveur stub, des filtres XDR Programmation de l’interface en RPCL 2) Trois procédures en Stub standard (mode UDP) int registerrpc(…) Initialisation du service RPC, Enregistrement séparé de chaque fonction void svc_run() Attente d ’appel de fonctions int callrpc(…) Appel de la RPC correspondante, codage des paramètres, décodage des résultats, bloquant 3) Une vingtaine de procédures en Stub expert Connaissances réseau indispensables (socket…)

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié LES PACKAGES RMI (Remote Method Invocation) Principes RPC objet intégré au langage Java Interaction d'objets situés dans des espaces d'adressage différents sur des machines distinctes Simple à mettre en œuvre : un objet distribué se manipule comme tout autre objet Java Methode_1 Methode_n état objet serveurobjet client appel Système de communication Talon serveur Talon client référence Référence d'objet + méthode + arguments Résultat ou exception désignation envoi de requêtes exécution de requête retour de résultat [Cecchet 2000]

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié LES PACKAGES RMI (Remote Method Invocation) Contenu Package Java.rmi Interfaces Remote Classes MarshalledObject Naming RMISecurityManager Exceptions AccessException AlreadyBoundException ConnectException ConnectIOException MarshalException NoSuchObjectException NotBoundException RemoteException ServerError ServerException StubNotFoundException UnknownHostException UnmarshalException Package Java.rmi.registry Interfaces Registry Classes LocateRegistry Package java.rmi.server Interfaces RemoteRef RMIFailureHandler ServerRef Unreferenced Classes ObjID RemoteObject RemoteObjectInvocationHandler RemoteServer RemoteStub RMIClassLoader RMIClassLoaderSpi UID UnicastRemoteObject Exceptions ExportException ServerNotActiveException SocketSecurityException ServerCloneException

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié LES PACKAGES RMI (Remote Method Invocation) Principe de mise en oeuvre Définition du talon (stub) de la classe serveur Identique cotés client et serveur, Méthodes publiques de la classe serveur Interface dérivée de l’interface Remote Définition de la classe serveur Coté serveur, Classe dérivée de la classe UnicastRemoteObject implémentant le talon Lancement du serveur Création d’un registre des objets serveur (LocateRegistry) Création d’une instance de classe de la classe serveur Inscription de cet objet sur le registre des objets serveurs (Registry) Utilisation Localisation de l’objet distant (Registry) et création du talon Appel des méthodes à partir du talon

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié INTERFACE ET CLASSE SERVEUR Définition du talon Interface Remote Conteneur des méthodes publiques de la classe répartie Traitement obligatoire de l’exception RemoteException ou utilisation de throws Appel de Méthodes mais d’un constructeur Pas de création de l’objet à distance Remplacement du constructeur par Constructeur local (appelé sur le serveur) Méthode d’initialisation (appelée du client) public interface Hello extends java.rmi.Remote { String sayHello() throws java.rmi.RemoteException; }

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié INTERFACE ET CLASSE SERVEUR Définition du talon – Exemple public interface LireToutUnTexte extends java.rmi.Remote { /** lecture d'un fichier texte dans la chaîne sTexte ft nom du fichier */ public void Initialisation(String ft) throws java.rmi.RemoteException; /** Recherche du nombre d'occurrences de s dans sTexte s chaîne cherchée nombre d'occurrences */ public int Chercher(String s) throws java.rmi.RemoteException; /** Affichage du contexte des occurrences de s dans sTexte s chaîne cherchée taille taille du contexte */ public void ChercherVoir(String s, int taille) throws java.rmi.RemoteException; } LireToutUnTexte.java

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié INTERFACE ET CLASSE SERVEUR Définition de la classe serveur Classe UnicastRemoteObject Prototype de la classe serveur Implémentation obligatoire des méthodes de l’interface Création du talon serveur à l’instanciation d’un objet public class HelloServeur extends UnicastRemoteObject implements Hello { private String msg; // Constructeur public HelloServeur() throws java.rmi.RemoteException { this.msg = InetAddress.getLocalHost().getHostName(); } // Implémentation de la méthode distante. public String sayHello() throws java.rmi.RemoteException { return "Bonjour de la part de " + msg; }

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié INTERFACE ET CLASSE SERVEUR Définition de la classe serveur – Initialisation public class LireToutUnTexteServeur extends UnicastRemoteObject implements LireToutUnTexte { private String Stexte = ""; private BreakIterator bi; public LireToutUnTexteServeur() throws java.rmi.RemoteException {} /** Initialisation lecture d'un fichier texte dans la chaîne sTexte ft nom du fichier */ public void Initialisation(String ft) { String ligne; try { BufferedReader br = new BufferedReader(new FileReader (fr)); while ((ligne=br.readLine()) != null) { Stexte = Stexte.concat(ligne); } br.close(); // segmentation en mots bi = BreakIterator.getWordInstance(); bi.setText(Stexte); } catch (IOException e) { e.printStackTrace(); } } LireToutUnTexteServeur.java

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié REGISTRE ET LANCEMENT DU SERVEUR Registre des objets serveurs Classe LocateRegistry Méthodes statiques pour gérer un registre des objets serveurs Création Registry LocateRegistry.createRegistry(int p) Création d’un registre local acceptant des requêtes sur le port p (1099 par défaut) Lecture locale Registry LocateRegistry.getRegistry() Référence sur le registre local sur le port par défaut (1099) Registry LocateRegistry.getRegistry(int p) Référence sur le registre local sur le port p Lecture distante Registry LocateRegistry.getRegistry(String h) Référence sur le registre de la machine de nom h sur le port par défaut (1099) Registry LocateRegistry.getRegistry(String h, int p) Référence sur le registre de la machine de nom h sur le port p

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié REGISTRE ET LANCEMENT DU SERVEUR Inscription des objets sur le registre interface Registry void bind(String URL, Remote obj) Modification d’un lien entre une URL et un objet distant void rebind(String URL, Remote obj) Création d’un lien entre une URL et un nouvel objet distant void unbind(String URL) Destruction d’un lien entre une URL et un objet distant String[] list(String URL) Renvoie la liste des noms enregistrés sur une URL Remote lookup(String URL) Localisation de l’objet distant à partir de son URL, renvoie d’un talon Classe Naming Méthodes statiques de même nom utilisées sur le client Utilisation du même port pour la création du registre et l’URL

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié REGISTRE ET LANCEMENT DU SERVEUR Lancement du serveur int port = 12536; String host = InetAddress.getLocalHost().getHostName(); // Création du serveur de nom - rmiregistry Registry r = LocateRegistry.createRegistry(port); // Création d’une instance des objets serveur HelloServeur o1 = new HelloServeur(); LireToutUnTexteServeur o2 = new LireToutUnTexteServeur(); // Inscription des serveurs Hello et Lire r.rebind("//"+host+":"+port+"/Hello", o1); r.rebind("//"+host+":"+port+"/Lire", o2); // Liste des serveurs inscrits String s[] = r.list(); for (int i = 0;i < s.length;i++) System.out.println(s[i]); LancementServeur.java //irp1:12536/Lire //irp1:12536/Hello

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié REGISTRE ET LANCEMENT DU SERVEUR Appel de méthodes distantes int port = 12536; String host = "irp1"; String URL = "//"+host+":"+port+"/"; Registry r = LocateRegistry.getRegistry(host, port); // référence sur le talon de l'objet distant Hello h = (Hello) r.lookup(URL+"Hello"); // appel à une méthode distante System.out.println(h.sayHello()); LireToutUnTexte lt = (LireToutUnTexte) r.lookup(URL+"Lire"); lt.Initialisation("cours07/adolphe.txt"); String s = Keyboard.getString("mot à chercher? "); System.out.println("Il y a " + lt.Chercher(s) + " occurences de ce mot dans le texte"); testAdolphe.java Bonjour de la part de irp1 mot à chercher? Adolphe Il y a 39 occurences de ce mot dans le texte