TP Java RMI. Alexandre Denis Alexandre.Denis@inria.fr. Inria Bordeaux Sud-Ouest France ENSEIRB PG306

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

Intergiciel - concepts de base

Calcul Parallèle. Cours 5 - JAVA RMI

RMI le langage Java XII-1 JMF

Remote Method Invocation Les classes implémentant Serializable

Remote Method Invocation (RMI)

Conception de serveurs d'applications ouverts

Remote Method Invocation en Java (RMI)

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

Programmation répartie RPC & RMI

Java - RMI Remote Method Invocation. Java - RMI

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

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

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

Initiation à JAVA et à la programmation objet.

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

Synchro et Threads Java TM

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

Java DataBaseConnectivity

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

Programmer en JAVA. par Tama

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

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

Présentation de Java. Olivier de Pertat IT GROUP

Java Naming and Directory Interface

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

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

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

Un ordonnanceur stupide

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

Traitement de données

Cours 1: Java et les objets

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

Introduction au langage Java

Introduction à CORBA

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

Sécurité Java 2. Première approche. Installation des exemples. Exemple d'une applet

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

Architecture Orientée Service, JSON et API REST

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

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

1 Définition d une classe en Java

Auto-évaluation Programmation en Java

Chapitre 2. Classes et objets

TP1 : Initiation à Java et Eclipse

Projet gestion d'objets dupliqués

as Architecture des Systèmes d Information

OpenPaaS Le réseau social d'entreprise

2 Chapitre 1 Introduction

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

La base de données XML exist. A. Belaïd

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Java c est quoi? Java pourquoi?

Création d une application JEE

Architecture applicative et Cartographie

OS Réseaux et Programmation Système - C5

Architectures n-tiers Intergiciels à objets et services web

INITIATION AU LANGAGE JAVA

Chapitre 10. Les interfaces Comparable et Comparator 1

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

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

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

La carte à puce. Jean-Philippe Babau

Programmation par les Objets en Java

Développement Logiciel

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

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

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

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

PROGRAMMATION PAR OBJETS

Premiers Pas en Programmation Objet : les Classes et les Objets

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

Bases du langage. Historique Applications et applets Éléments de base du langage Classes et objets Les exceptions

Une introduction à Java

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

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Une introduction à la technologie EJB (2/3)

Corrigé des exercices sur les références

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

LOG4430 : Architecture logicielle et conception avancée

Derrière toi Une machine virtuelle!

Java 1.5 : principales nouveautés

Programmation Orientée Objet

Programmation Objet Java Correction

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

Applet pour visualiser les variables «automate» notifiées

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

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Projet de programmation (IK3) : TP n 1 Correction

Applications des patrons de conception

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

Chapitre I Notions de base et outils de travail

Threads. Threads. USTL routier 1

Transcription:

TP Java RMI Alexandre Denis Alexandre.Denis@inria.fr Inria Bordeaux Sud-Ouest France ENSEIRB PG306

Paradigme RMI RMI (Remote Method Invocation) RPC orientés objet (encapsulation, héritage,...) objet : entité de désignation et de distribution - 2

Java RMI Des RPC orientés objets en Java Passage des paramètres par copie lors des appels de méthode à distance (sérialisation) implements Serialized Transport TCP Déploiement via le registre de nom rmiregistry Autres caractéristiques ramasse-miette réparti (Distributed Garbage Collector) intégration des exceptions chargement dynamique de byte code (codebase) aspect sécurité, applets, persistance, proxy, serveur http - 3

Modèle de threads Appel synchrone de la méthode distante Client bloqué tout le temps de l'appel distant 1 thread par client côté serveur Appel asynchrone En utilisant explicitement un thread côté client... Appels concurrents côté serveur Exclusion mutuelle avec le mot clef synchronized - 4

Interface d'objet Distribué Quelques règles l'interface de l'od doit étendre java.rmi.remote les méthodes de l'od doivent déclarer qu'ils sont susceptibles de lancer des exceptions java.rmi.remoteexception les méthodes de l'od doivent manipuler des types primitifs, Serializable (e.g. String,..., défini par l'utilisateur) ou Remote Exemple // Hello.java import java.rmi.remote; import java.rmi.remoteexception; public interface Hello extends Remote { String sayhello() throws RemoteException; - 5

HelloImpl.java Implémentation de l'objet import java.rmi.remoteexception; import java.rmi.registry.locateregistry; import java.rmi.registry.registry; import java.rmi.server.unicastremoteobject; class HelloImpl implements Hello { public String sayhello() throws RemoteException { System.out.println("Remote Invokation of method sayhello()"); return "Hello World!"; - 6

HelloServer.java Implémentation du serveur public class HelloServer { public static void main(string args[]) { try { // activation de l'objet distribué Hello hello = new HelloImpl(); Hello stub = (Hello)UnicastRemoteObject.exportObject(hello, 0); // binding de l'objet distribué dans le registre de nom Registry registry = LocateRegistry.getRegistry(); registry.rebind("hello", stub); catch (Exception e) { System.out.println("HelloServer Exception: " + e.getmessage()); e.printstacktrace(); - 7

HelloClient.java import java.rmi.remoteexception; import java.rmi.registry.locateregistry; import java.rmi.registry.registry; Content public class HelloClient { public static void main(string args[]) { try { // recherche de l'objet distribué dans le registre de nom Registry registry = LocateRegistry.getRegistry(args[0]); // Hello hello = (Hello) registry.lookup("hello"); machine serveur // appel de méthode à distance String s = hello.sayhello(); System.out.println(s); catch (Exception e) { System.out.println("HelloClient exception: " + e.getmessage()); e.printstacktrace(); - 8

Registre de nom rmiregistry [port] démarre le registre de nom des objets distants sur la machine en cours avec un certain numéro de port (par défaut, port 1099) Exemples rmiregistry & rmiregistry 2011 & - 9

Déploiement 1) Compilation du client et du serveur RMI HostA> javac *.java 2) Démarrage du registre de nom RMI (par défaut port 1099) HostA> rmiregistry 5555 & 3) Démarrage du serveur (sur la même machine que le registre de nom) HostA> java HelloServer 5555 4) Démarrage du client RMI (en local et à distance) HostA> java HelloClient localhost:5555 HostB> java HelloClient HostA:5555-10

Téléchargement des stubs Cas où le client ne connait que l'interface Remote et ne dispose pas par avance des stubs... Source : Sun - 11

Téléchargement d'un sous-type Le serveur manipule un sous-type défini uniquement par le serveur... Source : Sun - 12

Security Manager et Codebase Utilisation d'un Security Manager if (System.getSecurityManager() == null) { System.setSecurityManager(new SecurityManager()); Politique de sécurité (fichier all.policy) grant { ; permission java.security.allpermission; Prise en compte de la politique de sécurité java -Djava.security.policy=all.policy... Utilisation du codebase avec HTTP (extension du classpath) java... -Djava.rmi.server.codebase=http://webserver/classes/ - 13

Récapitulatif Définition de l'interface, partagée entre client et serveur Implémentation de l'objet, dans le serveur Implémentation du processus serveur Activation de l'objet Publication de la référence dans le registre Implémentation du client Recherche de la référence dans le registre Appel de méthode à distance - 14

Travail à faire - 15

Echauffement Compiler et faire tourner les exemples Hello World En local A distance Avec le serveur d'un voisin Modifier l'exemple pour que le message soit passé en argument de la méthode Modifier le serveur pour avoir plusieurs instances d'objets distribués - 16

Calcul distribué Approximation de Pi par la formule de Bailey Borwein Plouffe (1995) Permet de caluler directement le N ème chiffre de Pi En hexadécimal... Notes : Calculer chiffre par chiffre n'est pas le meilleur algo pour calculer Pi BBP pas le meilleur algo pour calculer les chiffres de Pi Bellard, puis Gourdon ont proposé un algo plus efficace Algo simple pour calculer en distribué - 17

Calcul distribué étape 1, version naïve Télécharger pi.java Compiler, faire tourner localement Faire un service de calcul distribué maître-esclave Un objet esclave fournissant la méthode pidigit Un maître appelle la méthode sur les esclaves et reconstitue le résultat global Faire tourner avec plusieurs esclaves simultanés Comment gère-t-on plusieurs requêtes simultanées côté maître? - 18

Calcul distribué étape 2, paquets La première version n'est pas très efficace avec un RMI pour chaque chiffre Nous allons désormais calculer par paquet de chiffre, et non chiffre par chiffre Quel type d'objet circule alors sur le réseau avec les RMIs? Proposer une nouvelle version où chaque appel calcule un ensemble de chiffres Le maître doit réassembler les paquets/chiffres dans le bon ordre! Vérifier que le résultat est identique à celui donné par le pi.java original - 19

Calcul distribué étape 3, callback Pour gérer l'asynchronisme entre maître et esclaves, le callback est une alternative fréquente Le maître est serveur, propose du travail Les esclaves demandent du travail et envoient leur résultat 2 méthodes séparées Proposer une nouvelle version basée sur ce principe Vérifier encore une fois que le résultat est identique à celui donné par le pi.java original Quelle version est la plus simple? - 20

FAQ ClassNotFoundException à l'enregistrement d'un objet dans le registry rmiregistry doit avoir la définition de l'interface dans son CLASSPATH Address already in use au lancement de rmiregistry Utilisez un autre port que le port par défaut 1099-21

À vous de jouer! http://dept-info.labri.fr/~denis/