NSY102, Exercices dirigés associés à RMI

 

1) Le capteur d'humidité devient un service RMI, Compétez les classes de cette archive ed_rmi_q1.jar

exécution de rmiregistry par c:\>start rmiregistry, du serveur HTTP par ed_rmi_q1>java -cp . server.SimpleHttpd2

 

Le pattern Adaptateur est utilisé, cf. support de cours

 

 

2) Téléchargement (upload) et exécution d'un "Agent" côté serveur

Le client "exécute" des applications côté serveur.

L'interface AgentI suggérée

import java.rmi.RemoteException;
import java.rmi.Remote;
public interface AgentI extends Remote{
 /**
  * Cette méthode engendre un Thread et "exécute" r
  * L'arrêt est à la charge du client demandeur
  * 
  * @param  r une instance d'une classe qui implémente cette interface
  */
  public void execute(Runnable r) throws RemoteException;
}

Développez le service RMI, la classe implémentant l'interface ci-dessus (par exemple la classe AgentService) côté serveur
et proposez plusieurs clients, vérifiez le bon fonctionnement.

 

3) Téléchargement (download) et exécution d'un "Agent" côté client,

Au démarrage du client, celui-ci s'enquiert de la tâche à accomplir.

En fonction du nom du client transmis lors de l'appel de la méthode getClient un code différent est "envoyé".

import java.rmi.RemoteException;
import java.rmi.Remote;

public interface BootstrapI extends Remote{

  
  public Runnable getClient(String name) throws RemoteException;
}

Développez le service RMI, la classe impléméntant l'interface ci-dessus (par exemple la classe Bootstrap) côté serveur et plusieurs "téléchargements" de clients, vérifiez le bon fonctionnement.