ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc

Slides:



Advertisements
Présentations similaires
ORTHOGRAM PM 3 ou 4 Ecrire: « a » ou « à » Référentiel page 6
Advertisements

LES NOMBRES PREMIERS ET COMPOSÉS
Page 1 Retour sur le e- tourisme. Page 2 Quelques chiffres…
Distance inter-locuteur
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
Objets Distribués Chronique dune invasion annoncée Pourquoi? Comment? Qui : Corba / COM-DCOM / Java RMI...
ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
Objets Distribués Chronique d ’une invasion annoncée
Des sockets à RMI. Pourquoi ? Maturation de la technologie orientée objet –ADA, Modula –Smalltalk, C++, Java Maturation des communications Client- Serveur.
Des sockets à RMI.
À travailler seuls Département SI AM Dery Concepts généraux
À travailler seuls Département SI AM Dery Concepts généraux
Les numéros
Introduction aux applications réparties
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
Exposé de Système - Informatique et Réseau
Le Modèle Logique de Données
Architecture de réseaux
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
Programmation Objet en JAVA Cours 9 : Réseau R. M
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
TP 3-4 BD21.
Servlet JAVA.
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
JOME, un Composant Logiciel pour le Télé-Enseignement des Mathématiques via le WEB, Compatible OpenMath et MathML Laurent DIRAT OVE / I3S-UNSA.
2 1. Vos droits en tant quusagers 3 1. Vos droits en tant quusagers (suite) 4.
Mr: Lamloum Med LES NOMBRES PREMIERS ET COMPOSÉS Mr: Lamloum Med.
Interagir avec un objet mixte Propriétés physiques et numériques Céline Coutrix, Laurence Nigay Équipe Ingénierie de lInteraction Homme-Machine (IIHM)
Etude des Technologies du Web services
1 Cours numéro 3 Graphes et informatique Définitions Exemple de modélisation Utilisation de ce document strictement réservée aux étudiants de l IFSIC.
XML-Family Web Services Description Language W.S.D.L.
Java Remote Method Invocation (RMI)
1 Guide de lenseignant-concepteur Vincent Riff 27 mai 2003.
Virtual Local Area Network
Titre : Implémentation des éléments finis sous Matlab
Configuration de Windows Server 2008 Active Directory
Tableaux de distributions
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
LES NOMBRES PREMIERS ET COMPOSÉS
Objets Distribués Chronique d’une invasion annoncée Pourquoi? Comment?
Systèmes mécaniques et électriques
DUMP GAUCHE INTERFERENCES AVEC BOITIERS IFS D.G. – Le – 1/56.
Programmation concurrente
1.1 LES VECTEURS GÉOMÉTRIQUES
Titre : Implémentation des éléments finis en Matlab
COURS DE PROGRAMMATION ORIENTEE OBJET :
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Équipe 2626 Octobre 2011 Jean Lavoie ing. M.Sc.A.
LA GESTION COLLABORATIVE DE PROJETS Grâce aux outils du Web /03/2011 Académie de Créteil - Nadine DUDRAGNE 1.
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
1/65 微距摄影 美丽的微距摄影 Encore une belle leçon de Macrophotographies venant du Soleil Levant Louis.
Module I-C3 : Applications Web IUT R&T 2e année
1 Architecture orientée service SOA Architecture orientée service SOA (Service Oriented Architecture)
Outil de gestion des cartes grises
Exercice de vérification 1 p
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
Les sockets.
Module 3 : Création d'un domaine Windows 2000
Les RPC remote procedure call
Cours MIAGE « Architectures Orientées Services »Henry Boccon-GibodCours MIAGE « Architectures Orientées Services »Henry Boccon-Gibod 1 Architectures Orientées.
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.
Java Remote Method Invocation
Transcription de la présentation:

ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc Invocation de Méthode à distance Exemple : Java Remote Method Invocation À travailler seuls ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc Concepts généraux Il faudrait ajouter quelque chose tôt sur le marshalling et quelque chose sur le protocole d ’application…. Et le déploiement Mise en œuvre Java

Maturation de la technologie orientée objet Crediter debiter Compte AM montant Objet = module logiciel Compte AM Crediter 1000 Interaction entre objets : message

Objets + Messages module logiciel Application = Collection d ’objets interagissant module logiciel indépendance de la programmation et de la construction unité autonome Méthode = comportement des objets Message = interaction entre objets de l’application

Classes et héritage Mécanisme d’abstraction + Généralisation Surcharge des méthodes par héritage

Classe et Composition VEHICULE CARROSSERIE MOTEUR

Objets = briques logicielles Assembler des briques élémentaires Réduire la complexité des systèmes d’information Séparation entre interface et implémentation Représentation et types de données Mécanismes d’abstraction

Maturation des communications Client Serveur Des programmes (fonctionnant sur des machines différentes) qui communiquent au travers du réseau. Un programme Client envoie des requêtes à un programme serveur (qui prend en charge l’implémentation)

Infrastructure Client Serveur requêtes

Client Serveur

Objets distribués Comment trouver une solution ? Programmation OO = envoi de requêtes entre plusieurs objets Ne peut-on pas placer des objets sur différents ordinateurs de sorte qu’ils puissent s ’envoyer directement des messages ?

Infrastructure Objets Distribués Client Client Serveur Serveur

Invocation de méthodes distantes Mécanisme qui permet à des objets localisés sur des machines distantes de s’échanger des messages (invoquer des méthodes)

Invocation de méthodes distantes Semble simple en théorie... ... un peu plus complexe en réalité !!!

RMI Heureusement, on utilise Java ;-) Java Remote Method Invocation est la solution à notre problème RMI permet à des objets Java d ’invoquer des méthodes sur des objets localisés dans des JVM différentes, et même distantes sur le réseau, et ceci de façon quasi transparente !!!

Invocation de méthodes distantes

Stubs et encodage des paramètres le code d’un objet client invoque une méthode sur un objet distant Utilisation d’un objet substitut dans la JVM du client : le stub (souche) de l ’objet serveur

Stubs et encodage des paramètres

Générateur de stubs Les stubs gèrent la communication ainsi que l'encodage des paramètres Processus évidemment complexe... Entièrement automatique Un outil permet de générer les stubs pour les OD

Stubs et rmic La commande rmic du jdk rend transparent la gestion du réseau pour le programmeur une référence sur un ODréférence son stub local syntaxe = un appel local objetDistant.methode()

Un exemple : le sempiternel « Hello World » !!!

Interfaces et classes prédéfinies

Interface = protocole d ’application L ’interface HelloWorld import java.rmi.*; interface HelloWorld extends Remote { public String sayHello() throws RemoteException; }

Rôle de l ’interface HelloWorld HelloWorld

Les exceptions L ’exception RemoteException doit être déclarée par toutes les méthodes distantes Appels de méthodes distants moins fiables que les appels locaux Serveur ou connexion peut être indisponible Panne de réseau ...

Du côté client HelloWorld hello = ...; // Nous verrons par la suite comment obtenir // une première référence sur un stub String result = hello.sayHello(); System.out.println(result);

Du côté Serveur Implémentation de la classe qui gère les méthodes de l ’interface HelloWorld // Classe d'implémentation du Serveur public class HelloWorldImpl extends UnicastRemoteObject implements HelloWorld { public String sayHello() throws RemoteException { String result = « hello world !!! »; System.out.println(« Méthode sayHello invoquée... » + result); return result; }

Classe d ’implémentation doit implanter l ’interface HelloWorld doit étendre la classe RemoteServer du paquetage java.rmi RemoteServer est une classe abstraite UnicastRemoteObject est une classe concrète qui gére la communication et les stubs

Classe d ’implémentation HelloWorld HelloWorld HelloWorldImpl

Référence sur un objet On sait implanter un serveur d ’un côté, et appeler ses méthodes de l ’autre MAIS Comment obtient-on une référence vers un stub de notre objet serveur ???

Localisation des objets de serveur On pourrait appeler une méthode sur un autre objet serveur qui renvoie une référence sur le stub... Mais quoi qu ’il en soit, le premier objet doit lui aussi être localisé (La poule et l ’œuf) !!! On a alors recours a un Service de Nommage

Les Services de Nommage Obtention d'une première référence sur un objet distant : « bootstrap » à l’aide d’un Service de Nommage ou Annuaire Enregistrement des références d'objets dans l'annuaire afin que des programmes distants puissent les récupérer

Exemple : Le RMIRegistry Implémentation d'un service de nommage Fourni en standard avec RMI Permet d'enregistrer des références sur des objets de serveur afin que des clients les récupèrent On associe la référence de l'objet à une clé unique (chaîne de caractères) Le client effectue une recherche par la clé, et le service de nommage lui renvoie la référence distante (le stub) de l'objet enregistré pour cette clé

Le RMIRegistry Programme exécutable fourni pour toutes les plates formes S'exécute sur un port (1099 par défaut) sur la machine serveur Pour des raisons de sécurité, seuls les objets résidant sur la même machine sont autorisés à lier/délier des références Un service de nommage est lui-même localisé à l'aide d'une URL

La classe Naming du package java.rmi permet de manipuler le RMIRegistry supporte des méthodes statiques permettant de Lier des références d'objets serveur Naming.bind(...) et Naming.rebind(...) Délier des références d'objets serveur Naming.unbind(...) Lister le contenu du Naming Naming.list(...) Obtenir une référence vers un objet distant Naming.lookup(...)

Remarque Le Service de Nommage n'a pas pour fonction le référencement de tous les objets de serveur Il devient vite complexe de gérer l'unicité des clés La règle de bonne utilisation du Naming est de lier des objets qui font office de point d'entrée, et qui permettent de manipuler les autres objets serveurs

Conception, implémentation et exécution de l'exemple Rappel On veut invoquer la méthode sayHello() d'un objet de serveur distant de type HelloWorld depuis un programme Java client Nous allons devoir coder L'objet distant Le serveur Le client Et définir les permissions de sécurité et autres emplacements de classes...

Processus de développement 1) définir une interface Java pour un OD 2) créer et compiler une classe implémentant cette interface 3) créer et compiler une application serveur RMI 4) créer les classes Stub (rmic) 5) démarrer rmiregistry et lancer l’application serveur RMI 6) créer, compiler et lancer un programme client accédant à des OD du serveur

Que doit connaître le client ? Lorsqu ’un objet serveur est passé à un programme, soit comme paramètre soit comme valeur de retour, ce programme doit être capable de travailler avec le stub associé Le programme client doit connaître la classe du stub

Que doit connaître le client ? les classes des paramètres, des valeurs de retour et des exceptions doivent aussi être connues... Une méthode distante est déclarée avec un type de valeur de retour... ...mais il se peut que l ’objet réellement renvoyé soit une sous-classe du type déclaré

Que doit connaître le client ? Le client doit disposer des classes de stub, classes des objets retournés… copier les classes sur le système de fichiers local du client (CLASSPATH)... ...cependant, si le serveur est mis à jour et que de nouvelles classes apparaissent, il devient vite pénible de mettre à jour le client C ’est pourquoi les clients RMI peuvent charger automatiquement des classes de stub depuis un autre emplacement Il s ’agit du même type de mécanisme pour les applets qui fonctionnent dans un navigateur

Chargement dynamique des classes Problème de sécurité Le programme client télécharge du code sur le réseau Ce code pourrait contenir des virus ou effectuer des opérations non attendues !!! Utilisation d ’un gestionnaire de sécurité pour les applications de clients RMI Possibilité de créer des gestionnaires de sécurité personnalisés pour des applications spécifiques RMI fournit des gestionnaires de sécurité suffisants pour un usage classique

Chargement dynamique Pour ne plus déployer les classes du serveur chez le client Utilisation des chargeurs de classes qui téléchargent des classes depuis une URL Utilisation d ’un serveur Web qui fournit les classes Ce que ça change Bien entendu, les classes et interfaces de l ’ objet distant ne changent pas Le code du serveur ne change pas le client et la façon de le démarrer sont modifiés Et lancer un serveur Web pour nos classes

Hello World : chargement dynamique Séparation des classes Serveur (fichiers nécessaires a l'exécution du serveur) HelloWorldServer.class HelloWorldImpl.class HelloWorld.class HelloWorldImpl_Stub.class Download (fichiers de classes à charger dans le programme client) Client (fichiers nécessaires au démarrage du client) HelloWorldClient.class

Les étapes Mettre les classes Download dans le répertoire des documents Web du serveur Web, accessibles via une URL Le programme Java client doit pouvoir se connecter aux ports de la base de registres RMI et des implémentations des objets de serveur, ainsi qu'au port du serveur Web Le client intègre un gestionnaire de sécurité RMI pour les stubs téléchargés dynamiquement

Passage de paramètres On sera souvent amenés a passer des paramètres aux méthodes distantes... Les méthodes distantes peuvent retourner une valeur ou lever une exception... On a deux types de paramètres Les objets locaux Les objets distants

Passage de paramètres: ATTENTION Certains objets sont copiés (les objets locaux), d'autres non (les objets distants) Les objets distants, non copiés, résident sur le serveur Les objets locaux passés en paramètre doivent être sérialisables afin d'être copiés, et ils doivent être indépendants de la plate-forme Les objets qui ne sont pas sérialisables lèveront des exceptions Attention aux objets sérialisables qui utilisent des ressources locales !!!

Appel de Procédure à Distance CLIENT SERVEUR F(1,  x) F(1,x) unmarshalling marshalling 10 marshalling unmarshalling

Langages de spécifications Spécifications des types de données qui transitent sur le réseau Protocole := CHOICE { requete [0] REQUETE, reponse [1] REPONSE } ASN.1 et norme ISO Programme protocol{ version { REPONSE rerep(REQUETE) = 1 }= 1 } = 10000 XDR et RPC de SUN

Générateurs de Stubs Spécifications des données XDR ASN1 Générateurs RPCGEN / MAVROS Fichiers générés Types de données C Lisp Java Librairie marshalling et unmarshalling squelettes du client et du serveur Types de données C