TP RMI

Daniel Hagimont

Daniel.Hagimont@enseeiht.fr



L'objectif de ce TP est d'utiliser Java RMI pour implanter une petite application dans laquelle une applet permet de saisir les coordonnées d'une personne (nom, adresse email) et de les enregistrer dans un serveur. L'interface permet de sélectionner le serveur dans lequel la personne doit être enregistrée. On gèrera 2 serveurs.
L'application permet également de rechercher l'email d'une personne qui a été enregistrée en indiquant le serveur dans lequel faire cette recherche.

fig


Si on ne trouve pas la personne dans le serveur indiqué, la recherche est alors propagée au second serveur.


L'interface d'un serveur est la suivante :

public interface Carnet extends Remote {
    public void Ajouter(SFiche sf) throws RemoteException;
    public RFiche Consulter(String n, boolean forward) throws RemoteException;
}

public interface SFiche extends Serializable {
    public String getNom ();
    public String getEmail ();
}
public interface RFiche extends Remote {
    public String getNom () throws RemoteException;
    public String getEmail () throws RemoteException;
}


L'enregistrement d'une personne utilise la sérialisation pour envoyer au serveur une copie d'un objet d'interface SFiche.
La consultation retourne une référence à un objet RMI d'interface RFiche ; l'applet qui consulte peut alors récupérer l'adresse email par un appel à distance sur cette référence.
La méthode de consultation inclut un paramètre booléen forward indiquant si la requête doit être propogée à l'autre serveur (pour éviter de boucler).

On vous donne :
- Carnet.java : l'interface d'un serveur
- SFiche.java : l'interface de l'objet sérialisé pour l'enregistrement auprès d'un serveur
- RFiche.java : l'interface de l'objet RMI retourné lors de la consultation auprès d'un serveur
- Saisie.java et page.html : l'applet implantant l'interface graphique de l'application
    Pour lancer l'applet :
        - en standalone : java Saisie
        - avec l'appletviewer : appletviewer -J-Djava.security.policy=java.policy
        - depuis un navigateur, plus compliqué, il faut signer l'applet ...

Vous devez :
- implanter CarnetImpl.java : la classe d'un serveur
- implanter SFicheImpl.java : la classe de l'objet sérialisé
- implanter RFicheImpl.java : la classe de l'objet RMI retourné par le serveur
- compléter Saisie.java : pour faire les appels aux serveurs