Modèle client-serveur

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

Remote Method Invocation (RMI)

Remote Method Invocation en Java (RMI)

RMI le langage Java XII-1 JMF

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

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

Conception de serveurs d'applications ouverts

Calcul Parallèle. Cours 5 - JAVA RMI

Remote Method Invocation Les classes implémentant Serializable

Intergiciel - concepts de base

Programmation répartie RPC & RMI

Projet gestion d'objets dupliqués

Java DataBaseConnectivity

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

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

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

Synchro et Threads Java TM

Programmation Objet Java Correction

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

Chapitre 10. Les interfaces Comparable et Comparator 1

Corrigé des exercices sur les références

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

Java - RMI Remote Method Invocation. Java - RMI

TP1 : Initiation à Java et Eclipse

Premiers Pas en Programmation Objet : les Classes et les Objets

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

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

Auto-évaluation Programmation en Java

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

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

Introduction aux applications réparties

Package Java.util Classe générique

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

Programmer en JAVA. par Tama

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

Java 1.5 : principales nouveautés

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

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

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

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

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

OS Réseaux et Programmation Système - C5

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

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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 )

TP, première séquence d exercices.

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

Java Licence Professionnelle CISII,

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

Programme Compte bancaire (code)

Java Naming and Directory Interface

Chapitre I Notions de base et outils de travail

F. Barthélemy. 17 mai 2005

INITIATION AU LANGAGE JAVA

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

Programmation par les Objets en Java

Présentation de Java. Olivier de Pertat IT GROUP

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

Création d une application JEE

Programmation Par Objets

Derrière toi Une machine virtuelle!

Une introduction à Java

Applet pour visualiser les variables «automate» notifiées

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Cours 1: Java et les objets

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

OpenPaaS Le réseau social d'entreprise

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

Threads. Threads. USTL routier 1

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

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Exercices sur les interfaces

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

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

Corrigés des premiers exercices sur les classes

Flux de données Lecture/Ecriture Fichiers

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

PROGRAMMATION PAR OBJETS

Introduction à CORBA

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

TP Programmation Java / JDBC / Oracle

Java avancé Objectifs. version support 1.2

Initiation à JAVA et à la programmation objet.

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

2 Chapitre 1 Introduction

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

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

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

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

Introduction au langage Java

Cours 14 Les fichiers

as Architecture des Systèmes d Information

Le passage à l échelle de serveur J2EE : le cas des EJB

TD/TP PAC - Programmation n 3

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

Transcription:

Modèle client-serveur Daniel Hagimont IRIT/ENSEEIHT 2 rue Charles Camichel - BP 7122 31071 TOULOUSE CEDEX 7 Daniel.Hagimont@enseeiht.fr http://hagimont.perso.enseeiht.fr 1

Modèle client-serveur Définition Application client/serveur application qui fait appel à des services distants au travers d un échange de messages (les requêtes) plutôt que par un partage de données (mémoire ou fichiers) serveur programme offrant un service sur un réseau (par extension, machine offrant un service) client programme qui émet des requêtes (ou demandes de service). Il est toujours l initiateur du dialogue 2

Modèle client-serveur Communication par messages Deux messages (au moins) échangés Le premier message correspondant à la requête est celui de l'appel de procédure, porteur des paramètres d'appel. Le second message correspondant à la réponse est celui du retour de procédure porteur des paramètres résultats. appel n_proc (p_in, p_out) Appel(p_in) Procédure n_proc (p_in, p_out) begin Retour(p_out) end client serveur 3

Remote Procedure Call (RPC) Principes Génération du code d'envoi et réception des messages De détection et réémission des messages perdus Objectif : le programmeur développe son application comme si elle était centralisée 4

RPC [Birrel & Nelson 84] Principe de réalisation Appelant Service RPC (talon) A Protocole de communication Protocole de communication Service RPC (talon) B Appelé Appel réseau appel C E return D return client serveur 5

Java Remote Method Invocation RMI Un RPC objet intégré à Java Interaction d'objets situés dans des espaces d'adressage différents (des Java Virtual Machines - JVM) sur des machines distinctes Simple à mettre en œuvre : un objet distribué se manipule comme tout autre objet Java 6

Principe objet client objet serveur référence appel Talon client Système de communication Talon serveur état Methode_1 Methode_n 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 7

Coté serveur rmiregistry stub 2 Naming 1 Client 3 Serveur stub Skeleton JVM Client JVM Serveur 8

Coté serveur 0 - A la création de l objet, un stub et un skeleton (avec un port de communication) sont créés coté serveur 1 - L'objet serveur s'enregistre auprès d'un annuaire (rmiregistry) en utilisant la classe Naming (méthode rebind) 2 L'annuaire (rmiregistry) enregistre le stub de l objet 3 L'annuaire est prêt à donner des références à l objet serveur 9

Coté client 5 rmiregistry 4 Naming stub Naming Client 6 Serveur 7 Stub JVM Client Skeleton 7 7 JVM Serveur 10

Coté client 4 - L'objet client fait appel à l'annuaire (rmiregistry) en utilisant la classe Naming pour localiser l'objet serveur (méthode lookup) 5 L'annuaire délivre une copie du stub 6 - L objet stub est installé et sa référence est retournée au client 7 - Le client effectue l'appel à l objet serveur par appel à l objet stub 11

Utilisation codage description de l interface du service écriture du code du serveur qui implante l interface écriture du client qui appelle le serveur compilation compilation des sources (javac) génération des stub et skeleton (rmic) (plus la peine, génération dynamique) activation lancement du serveur de noms (rmiregistry) lancement du serveur lancement du client 12

Manuel d'utilisation Définition de l'interface de l'objet réparti interface publique interface : "extends java.rmi.remote" methodes : "throws java.rmi.remoteexception" paramètres sérializables : "implements Serializable" paramètres références : "implements Remote" Ecrire une implémentation de l'objet réparti classe : "extends java.rmi.server.unicastremoteobject" 13

Exemple : Interface fichier Hello.java public interface Hello extends java.rmi.remote { public void sayhello() throws java.rmi.remoteexception; } Description de l interface 14

Exemple : Serveur fichier HelloImpl.java import java.rmi.*; import java.rmi.server.unicastremoteobject; public class HelloImpl extends UnicastRemoteObject implements Hello { String message; Réalisation du serveur // Implémentation du constructeur public HelloImpl(String msg) throws java.rmi.remoteexception { message = msg; } // Implémentation de la méthode distante public void sayhello() throws java.rmi.remoteexception { System.out.println(message); } 15

Exemple : Serveur fichier HelloImpl.java } public static void main(string args[]) { try { // Crée une instance de l objet serveur. Hello obj = new HelloImpl(); // Enregistre l'objet créer auprès du serveur de noms. Naming.rebind("//ma_machine/mon_serveur", obj); System.out.println("HelloImpl " + " bound in registry"); } catch (Exception exc) { } } Réalisation du serveur (suite) ATTENTION : dans cet exemple le serveur de nom doit être activé avant la création du serveur 16

Activation du serveur de nom par le serveur public static void main(string args[]) { int port; String URL; fichier HelloImpl.java try { // transformation d une chaîne de caractères en entier Integer I = new Integer(args[0]); port = I.intValue(); } catch (Exception ex) { System.out.println(" Please enter: java HelloImpl <port>"); return; } try { // Création du serveur de nom - rmiregistry Registry registry = LocateRegistry.createRegistry(port); // Création d une instance de l objet serveur Hello obj = new HelloImpl(); } // Calcul de l URL du serveur URL = "//"+InetAddress.getLocalHost().getHostName()+":"+ port+"/mon_serveur"; Naming.rebind(URL, obj); } catch (Exception exc) {...} 17

Exemple : Client import java.rmi.*; fichier HelloClient.java public class HelloClient { public static void main(string args[]) { try { // Récupération d'un stub sur l'objet serveur. Hello obj = (Hello) Naming.lookup("//ma_machine/mon_serveur"); // Appel d'une méthode sur l'objet distant. obj.sayhello(); } catch (Exception exc) { } } } Réalisation du client 18

Compilation Compilation de l interface, du serveur et du client javac Hello.java HelloImpl.java HelloClient.java Génération des talons (automatique maintenant) rmic HelloServeur skeleton dans HelloImpl_Skel.class stub dans HelloImpl_Stub.class. 19

Principe de l appel de méthode Java VM Client R_objet1.m () Java VM objet1 m () Stub objet1 Skeleton objet1 20

Passage en paramètre d un objet sérialisable Java VM Java VM Client R_objet1.m ( R_O2 ) O2 objet1 m ( R_clone_O2 ) clone_o2 Stub objet1 Skeleton objet1 21

Passage en paramètre d un objet remote O2 Java VM Java VM Client R_objet1.m ( R_O2 ) Stub O2 objet1 m ( R_O2 ) Stub O2 Stub objet1 Skeleton objet1 22