La plate-forme Java RMI

  • View
    219

  • Download
    2

Embed Size (px)

Text of La plate-forme Java RMI

  • La plate-forme Java RMIFrank Singhoff

    Bureau C-202

    Universit de Brest, France

    Lab-STICC/UMR 3192

    singhoff@univ-brest.fr

    UE systmes objets rpartis, Universit de Brest Page 1/25

  • Sommaire

    1. Le modle objets et les services de base.

    2. Service de code mobile.

    3. Rsum.

    4. Rfrences.

    UE systmes objets rpartis, Universit de Brest Page 2/25

  • Le modle objet de Java /RMI

    Objet distant/serveur

    Invocation

    Machine

    interface Java

    virtuelleMachine virtuelle

    Client

    de type RemoteObject

    RMI [MIC 98, DOW 98, E.D 00] (Remote Method Invocation) =pouvoir invoquer un objet dune JVM autre que la JVM locale.

    Pas de prise en compte de linteroprabilit mais simple dutilisation.

    Pas de transparence la localisation.

    Quasi transparence daccs : exceptions diffrentes, passage desobjets locaux par copie (et non par rfrence, lorsque linvocation estlocale), objets distants passes par rfrence (souches).

    UE systmes objets rpartis, Universit de Brest Page 3/25

  • Fonctionnement de la plate-forme

    Threadsvirtuelle

    Machine virtuelle

    Objet (RemoteObject) Souche

    JRMP ou IIOP (GIOP + TCP/IP)

    Squelette

    Client

    Serveur dobjets

    Machine

    Protocole dacheminement des invocations sur TCP : IIOP ou JRMP a.

    Utilisation de souches et squelettes gnrs partir de linterface de lobjet.

    Serveur dobjets : excute les invocations dobjets de faon multithread.

    Opration dactivation = cration du serveur dobjets (thread dcoute).

    aJava Remote Methode Protocol.

    UE systmes objets rpartis, Universit de Brest Page 4/25

  • Dsignation et service de nommage (1)

    bind()/rebind()

    virtuelle

    rmiregistry

    lookup()/list()

    Objet distant/serveur

    Machine

    Client

    Dsignation : //machine : port/objet o objet constitue le nomsymbolique dsignant un RemoteObject et le port constitue lespacede dsignation = pas de transparence la localisation.

    Serveur de nom : commande rmiregistry.

    Phase de liaison : bind, rebind, unbind.

    Phase de rsolution : lookup, list. La mthode lookup permet auclient dobtenir une souche.

    UE systmes objets rpartis, Universit de Brest Page 5/25

  • Dsignation et service de nommage (2)

    La classe statique Naming :

    public final class Naming {

    public static Remote lookup(String nom)

    throws ...

    public static void bind(String nom, Remote obj)

    throws ...

    public static void unbind(String nom)

    throws ...

    public static void rebind(String nom, Remote obj)

    throws ...

    public static String[] list(String nom)

    throws ...

    }

    UE systmes objets rpartis, Universit de Brest Page 6/25

  • Support de lhtrognit

    1. Systme dexploitation et langage de programmation :machine virtuelle Java .

    2. Codage/dcodage, srialisation/dsrialisation

    3. Services pour le code mobile. Ne capture pas lecontexte dexcution dun thread.

    UE systmes objets rpartis, Universit de Brest Page 7/25

  • Autres services

    1. Ramasse-miettes rparti pour les objets distants (detype RemoteObject).

    2. Gestionnaire de scurit (RMISecurityManager).

    3. Archivage des invocations effectues sur un objet(mthodes getLog/setLog).

    4. Activation sur invocation dobjets (rmid) ; activationsdites permanentes.

    5. Cration ou recherche de serveurs de noms (classeLocateRegistry).

    6. ...

    UE systmes objets rpartis, Universit de Brest Page 8/25

  • Exemple : client/serveur (1)

    Linterface (Hello.java) :public interface Hello extends java.rmi.Remote{

    String lireMessage()throws java.rmi.RemoteException;

    }

    Interface Java normale sauf :

    Hritage de java.rmi.Remote =objet distant.

    Utilisation dexceptions spcifiques (RemoteException).

    UE systmes objets rpartis, Universit de Brest Page 9/25

  • Exemple : client/serveur (2)

    Le client (HelloClient.java) :...String nom="//machine:port/HelloServeur";

    Hello obj=(Hello) Naming.lookup(nom)

    message=obj.lireMessage();... Etapes effectues par le client :

    1. Consultation du service de nommage et obtentiondune souche.

    2. Invocation de lobjet distant.

    UE systmes objets rpartis, Universit de Brest Page 10/25

  • Exemple : client/serveur (3)

    Le serveur (HelloServeur.java) :public class HelloServeur

    extends UnicastRemoteObject

    implements Hello

    {

    public String lireMessage() ...

    public static void main ...

    {

    HelloServeur MonServeur=new HelloServeur();

    String nom="//machine:port/HelloServeur";

    Naming.rebind(nom, MonServeur);

    ...

    }

    }

    UE systmes objets rpartis, Universit de Brest Page 11/25

  • Exemple : client/serveur (4)

    Etapes effectues par le serveur :

    1. Dclaration dun objet distant HelloServeur qui implantelinterface Hello. Objet de type UnicastRemoteObject ouRemoteObject.

    2. Fournir une implantation des mthodes invocables distance.

    3. Cration de lobjet.

    4. Activation de lobjet (cration du serveur dobjets) :activation effectue par le constructeur deUnicastRemotreObject. Si lon utilise un RemoteObject, ilfaut invoquer exportObject().

    5. Publication vers le service de nom.UE systmes objets rpartis, Universit de Brest Page 12/25

  • Exemple : client/serveur (5)

    Compilation :

    Gnrer les souches et squelettes avec la commande :

    rmic HelloServeur

    Compiler les sources Java .

    Excution ; dans le mme rpertoire, lancer :

    Le serveur de nom par la commande :

    rmiregistry num

    o num est le numro de port dcoute du serveur.

    Le serveur, puis le client par :

    java HelloServeur&

    java HelloClient

    UE systmes objets rpartis, Universit de Brest Page 13/25

  • Sommaire

    1. Le modle objets et les services de base.

    2. Service de code mobile.

    3. Rsum.

    4. Rfrences.

    UE systmes objets rpartis, Universit de Brest Page 14/25

  • Service de code mobile

    httpd

    ou autre (ex: rmiregistry)

    virtuelleMachine virtuelle

    methode()

    HTTP

    Client

    Objet distant/serveur

    Machine

    .class charges, soit par le chargeur normal de la JVM(CLASSPATH), soit par un dmon httpd = les fichiers doivent treaccessibles au dmon.

    Tout objet srialisable est tlchargeable : souche (ex : rmiregistry)ou autre.

    Tlchargement partir de (applet) ou vers le serveur.

    UE systmes objets rpartis, Universit de Brest Page 15/25

  • Exemple : agent mobile (1)

    migre(Agent)

    Hte Hte

    migre(Agent) migre(Agent)

    Agent

    Agent

    Agent

    Site initiateur

    Fonctionnement :

    Une liste de sites, ou Htes, permettent laccueil dagents.

    Un agent part dun site Initiateur, puis, visite un ensemble dhtespour y effectuer un traitement donn.

    Finalement, lagent revient sur le site de dpart pour rapporter sesrsultats.

    UE systmes objets rpartis, Universit de Brest Page 16/25

  • Exemple : agent mobile (2)

    Linterface de lagent : code + donnes mobilesimport java.io.Serializable;

    public interface Agent extends Serializable{void traitement(...);

    void afficheResultat();

    String hoteSuivant();}

    Serializable indique que lobjet, sil est utilis enparamtre dune mthode, doit tre srialis et encod(marshalling).

    UE systmes objets rpartis, Universit de Brest Page 17/25

  • Exemple : agent mobile (3)

    Limplantation de lagent :public class agentIngredient implements Agent{

    private Float monPrix = new ...private String monIngredient="";...

    public String hoteSuivant()...

    public void afficheResultat()...

    public void traitement(...)...

    }UE systmes objets rpartis, Universit de Brest Page 18/25

  • Exemple : agent mobile (4)

    Le service de migration offert par les htes :import java.rmi.Remote;import java.rmi.RemoteException;

    public interface Hote extends Remote{

    void migre(Agent a)throws RemoteException;

    }

    Chaque hte offre une interface permettant de recevoir un

    agent et de le lancer par un thread.

    UE systmes objets rpartis, Universit de Brest Page 19/25

  • Exemple : agent mobile (5)

    La mise en uvre de migre :public void migre(Agent a) {

    threadAgent monThread = new threadAgent(...

    monThread.start();

    }

    Le thread, support de lagent :

    class threadAgent extends Thread {

    public void run() {

    monAgent.traitement(...);

    String leSuivant = monAgent.hoteSuivant();

    Hote hote = (Hote) Naming.lookup(leSuivant);

    hote.migre(monAgent);

    }

    }

    UE systmes objets rpartis, Universit de Brest Page 20/25

  • Exemple : agent mobile (6)

    Compilation : rmic et javac. Lancement de lhte :

    java -Djava.rmi.server.codebase=http://...

    -Djava.rmi.server.hostname=beru.univ-brest.fr

    -Djava.security.policy=java.policy

    Hote_implem

    server.codebase = URL du serveur Web o les .class peuvent trecharges.

    server.hostname = localisation du serveur dobjets.

    java.policy = fichier pour RMISecurityManager.

    Lancement du rmiregistry : doit forcer le serveur de nom obtenir lasouche par le serveur web = un objet srialis contient lURLpermettant dobtenir le code, rien sinon (CLASSPATH).

    UE systmes objets rpartis, Universit de Brest Page 21/25

  • Sommaire

    1. Le modle objets et les services de base.

    2. Service de code mobile.

    3. Rsum.

    4. Rfrences.

    UE systmes objets rpartis, U