java rmi - syst emes distribu es et programmation orient ee objet

Download Java RMI -   Syst emes Distribu es et Programmation Orient ee Objet

Post on 14-Sep-2018

217 views

Category:

Documents

1 download

Embed Size (px)

TRANSCRIPT

  • Java RMI

    Arnaud LabourelCourriel: arnaud.labourel@lif.univ-mrs.fr

    Universite de Provence

    8 mars 2011

    Arnaud Labourel (Universite de Provence) Java RMI 8 mars 2011 1 / 58

  • Services par le reseau www

    Web services

    La toile (world wide web 6= internet) cest, grossierementlensemble des informations disponibles sur le port 80 viale protocole HTTP. Pour des raisons informationnelles et

    aussi pratiques, un certain nombre dextensions se sontaussi mises en place sur le port 80.

    Arnaud Labourel (Universite de Provence) Java RMI 8 mars 2011 2 / 58

  • Services par le reseau www

    Problematique de la Presentation desDonnees

    Donnees au sens large :

    pages html statiques

    reponse a une requete dans une base de donnees

    structures de donnees dans un programme

    ...

    Arnaud Labourel (Universite de Provence) Java RMI 8 mars 2011 3 / 58

  • Services par le reseau Interfaces de dialogue

    Interfaces

    Une solution portable : dialogue par lintermediairedinterfaces

    Unix et RPC (Remote procedure call)

    Interface Java pour RMI(remote method invocation)

    Interface IDL (Interface Definition Language) pourCorba

    Descriptions en XML pour les web services

    Arnaud Labourel (Universite de Provence) Java RMI 8 mars 2011 4 / 58

  • Services par le reseau Interfaces de dialogue

    Systemes Distribues et ProgrammationOrientee Objet

    Principe

    Systemes distribues et heterogenes

    Communication de haut-niveau

    Programmation objet et reseauManipuler des objets distants comme des objetsstandard

    variablesparametres de fonctionsvaleur de retour

    Arnaud Labourel (Universite de Provence) Java RMI 8 mars 2011 5 / 58

  • Services par le reseau Interfaces de dialogue

    Architectures Distribuees

    RPC : Remote Procedure Call

    Corba ( OMG ) multi-langage

    Java RMI

    J2EE ( Sun )

    DCOM ( Microsoft ) multi-langage

    .NET ( Microsoft )Intergiciel

    WebLogicObjectWeb...

    Arnaud Labourel (Universite de Provence) Java RMI 8 mars 2011 6 / 58

  • Services par le reseau CORBA

    Corba

    Common Object Request Broker Architecture : Corba

    DefinitionArchitecture logicielle, pour le developpement decomposants et dObject Request Broker ou ORB.

    ORB : intergiciel permettant les echanges de messagesentre objets.

    Mis en place par le consortium OMG (ObjectManagement Group).

    Interoperable avec Java RMI

    Approche essentiellement orientee objet

    Arnaud Labourel (Universite de Provence) Java RMI 8 mars 2011 7 / 58

  • Services par le reseau CORBA

    Fonctionnement de corba

    Arnaud Labourel (Universite de Provence) Java RMI 8 mars 2011 8 / 58

  • Services par le reseau CORBA

    IDL : Interface Definition Language (I)

    Description des interfaces distantes dans une syntaxeindependante de tout langage de programmation.Exemple:// Contrat OMG IDL dune application dannuaire.

    #include // Reutilisation du service de dates.

    module annuaire {

    typedef string Nom; // Nom dune personne.

    typedef sequence DesNoms; // Ensemble de noms.

    struct Personne { // Description dune personne.

    Nom nom; // - son nom.

    string informations; // - donnees diverses.

    string telephone; // - numero de telephone.

    string email; // - son adresse Email.

    string url; // - son adresse WWW.

    ::date::Date date_naissance;

    };

    Arnaud Labourel (Universite de Provence) Java RMI 8 mars 2011 9 / 58

  • Services par le reseau CORBA

    IDL (II)

    typedef sequence DesPersonnes;

    interface Repertoire {

    readonly attribute string libelle;

    exception ExisteDeja { Nom nom; };

    exception Inconnu { Nom nom; };

    void ajouterPersonne (in Personne personne)

    raises(ExisteDeja);

    void retirerPersonne (in Nom nom) raises(Inconnu);

    void modifierPersonne (in Nom nom, in Personne p)

    raises(Inconnu);

    Personne obtenirPersonne (in Nom nom) raises(Inconnu);

    DesNoms listerNoms ();

    };

    Arnaud Labourel (Universite de Provence) Java RMI 8 mars 2011 10 / 58

  • Services par le reseau CORBA

    Langages Utilises pour Corba

    Les langages actuellement supportes :

    C (tres dur)

    C++ (difficile)

    Java (facile)

    Smalltalk

    Ada,

    COBOL,

    En java, il faut utiliser les packages org.omg.CORBA etorg.omg.CosNaming.

    Arnaud Labourel (Universite de Provence) Java RMI 8 mars 2011 11 / 58

  • Remote Method Invocation (RMI) presentation

    Java RMI

    Definition

    Interface de programmation (API) pour le langage Javaqui permet dappeler des methodes distantes.

    Remote Method Invocation :

    Integre au JDK

    Systeme distribue simplifie

    Uniquement pour des objets Javaun objet distant (OD) est bien manipulable commeun objet standard :

    variableparametre de fonctionsvaleur de retour

    Arnaud Labourel (Universite de Provence) Java RMI 8 mars 2011 12 / 58

  • Remote Method Invocation (RMI) presentation

    Architecture Java RMI

    Le fonctionnement repose initialement sur le modeleclient/serveur :

    Le serveur presente des objets decrits par uneinterface

    Le serveur senregistre aupres dun annuaire(registry)

    Chaque client obtient une reference distante aupresde lannuaire.

    La communication haut-niveau sappuie sur lacommunication des objets Java sous-jacents deJVM a JVM.

    Arnaud Labourel (Universite de Provence) Java RMI 8 mars 2011 13 / 58

  • Remote Method Invocation (RMI) Serializable

    Classes implementant Serializable

    Comme les arguments dappels de fonction vont etretransmis par valeurs, il faut pouvoir transmettre uneclasse sous la forme dune communication reseau,cest-a-dire sous une forme aplatie (serialisee).

    Les classes distantes doivent etre Serializable,Transformation (automatique) des objets :

    pliage (marshalling) avant transmissiondepliage (unmarshalling) apres reception

    Arnaud Labourel (Universite de Provence) Java RMI 8 mars 2011 14 / 58

  • Remote Method Invocation (RMI) Serializable

    Linterface Serializable

    //~Acrit un objet dans le stream out (sauvegarde)

    private void writeObject(java.io.ObjectOutputStream out)

    throws IOException

    // restaure lobjet ~A son ~Atat lors du dernier appelde writeObject

    private void readObject(java.io.ObjectInputStream in)

    throws IOException , ClassNotFoundException;

    // m~Athode appel~Ae par read object lorsqu il ne trouve// pas dinstance de lobjet avec readObject

    private void readObjectNoData ()

    throws ObjectStreamException;

    Arnaud Labourel (Universite de Provence) Java RMI 8 mars 2011 15 / 58

  • Remote Method Invocation (RMI) Remote et Naming

    Linterface Remote

    Tous les objets distants heritent de linterface Remote.

    Les methodes (distantes) definies dans une classeheritant de remote peuvent etre appelees depuis unemachine virtuelle distante.

    Toute methode distante peut engendrer lexceptionRemoteException :

    serveur non trouve

    connexion interrompue

    ...

    Arnaud Labourel (Universite de Provence) Java RMI 8 mars 2011 16 / 58

  • Remote Method Invocation (RMI) Remote et Naming

    La Classe Naming

    DefinitionCette classe permet de manipuler des references sur desobjets distants dans un registre dobjet distant (serveur)

    Les noms qui sont des urls de la forme //hote:port/nom

    hote : nom du registre (serveur) contenant lobjetdistant (optionnel : localhost par defaut)

    port : numero de port sur lequel le registre accepteles requetes (optionnel : 1099 par defaut)

    name : nom associe a lobjet

    Arnaud Labourel (Universite de Provence) Java RMI 8 mars 2011 17 / 58

  • Remote Method Invocation (RMI) Remote et Naming

    Les methodes de Naming

    static void bind(String nom, Remote obj) : associenom a lobjet obj.

    static void rebind(String nom, Remote obj) :reassocie nom a lobjet obj.

    public static void unbind(String nom, Remote obj)

    desassocie nom de lobjet obj.

    static Remote lookup(String nom) : renvoie lobjetRemote associe au nom nom.

    static String[] list(String nom) : renvoie le tableaudes noms present dans lannuaire.

    Arnaud Labourel (Universite de Provence) Java RMI 8 mars 2011 18 / 58

  • Remote Method Invocation (RMI) Exemple de serveur RMI

    Exemple: Serveur decho

    Les fichiers:Echo.java : interfaceEchoImpl.java : implementation (cest-a-dire classe delobjet distant)EchoAppliServer.java, EchoClient.java : serveuret client.

    Les commandes preparatoires:javac *.java : compilationrmic EchoImpl : creation squelette (skel) et amorce(stub) (optionnel depuis 1.5)rmiregistry& (port 1099 par defaut)

    Execution (attention a laccessibilte des .class ,via CLASSPATH de rmiregistry):

    Serveur : java EchoAppliServerClient : java EchoClient (hote) msg

    Arnaud Labourel (Universite de Provence) Java RMI 8 mars 2011 19 / 58

  • Remote Method Invocation (RMI) Exemple de serveur RMI

    Architecture du serveur decho

    Echo (Interface)

    EchoImpl

    (objet distant)

    EchoAppliServer

    rmiregistry

    EchoClient

    implemente

    cree

    demande

    cherche

    Machine Serveur

    Machine client

    enregistre

    lobjet distant

    Arnaud Labourel (Universite de Provence) Java RMI 8 mars 2011 20 / 58

  • Remote Method Invocation (RMI) Exemple de serveur RMI

    Echo.java

    import java.rmi .*;

    public interface Echo extends Remote {

    public String echo(String str)

    throws RemoteException;

    }

    Arnaud Labourel (Universite

View more >