1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
// AgenceClient.java
import java.rmi.Naming;
import java.rmi.RMISecurityManager;
/**
* Classe dédiée côté client qui permet de regrouper toutes les opérations pour l'obtention d'une référence
* sur l'objet distant à partir de son nom et l'appel à la méthode à partir de la référence
* sur l'objet distant.
*
* La marche à suivre contient trois étapes :<br><br>
* la mise en place d'un security manager dédié qui est facultative<br>
* l'obtention d'une référence sur l'objet distant à partir de son nom avec la commande lookup()<br>
* l'appel à la méthode à partir de la référence sur l'objet distant<br>
*
* @author Nicolas
*/
public class AgenceClient {
public static void main(String[] args) {
double currentPrix = 0.0;
double leaderPrix = 0.0;
String currentNom = null;
String leaderNom = null;
// Creation et installation du Security Manager (facultatif) :
// permet de charger des classes qui ne sont pas forcément dans le Classpath de la machine locale
if (System.getSecurityManager() == null) {
System.setSecurityManager(new RMISecurityManager());
}
for (int i = 2; i <5; i++) {
try {
// Rechercher l'objet Agence dans la registry machine args[i]
//String nom = "rmi://" + args[i] + "/AgenceV2";
String nom = "rmi://127.0.0.1/AgenceV2";
IAgence agence = (IAgence)Naming.lookup(nom);
currentPrix = agence.getMeilleurPrix();
currentNom = agence.getName();
// Afficher le nom de l'agence et le prix proposé
System.out.println( "l'Agence " + currentNom + " propose une maison à " + currentPrix);
}
catch (Exception e) {
e.printStackTrace();
}
// Recherche le meilleur prix
if (leaderPrix > currentPrix) {
leaderPrix = currentPrix;
leaderNom = currentNom;
}
}
// On affiche le resultat de la recherche
String msg = "Le meilleur prix est à " + leaderNom + " : " + leaderPrix;
System.out.println(msg);
}
} |