<<<M1 - UE2

UE2 - TP 4

RMI


Mettre au point, en Java, un système RMI basé sur un service appelé Compute qui permet d'effectuer des calculs à distance sur un serveur.

On créera l'arborescence suivante :

├── server.policy
└── src
    ├── client
    │   └── ComputeClient.java
    ├── common
    │   ├── ComputeInterface.java
    │   ├── InputData.java
    │   └── Result.java
    └── server
        ├── ComputeImplementation.java
        └── ComputeServer.java	

On aura donc 3 packages :

Exercice 4.1

Ecrire la partie serveur du service qui réalise des calculs pour un entier n passé en paramètre :

  • calcul de fibonacci(n)
  • calcul de factorielle(n)

On utilisera java.math.BigInteger pour effectuer et retourner les résultats des calculs. L'interface du service de calcul que l'on nommera Compute est de la forme :

public class ComputeInterface extends Remote {

    /**
 	 * compute fibonacci(n) and return result as BigInteger
 	 */
	public BigInteger fibonacci(int n) throws RemoteException;
  
  	/**
  	 * compute factorial(n) and return result as BigInteger
  	 */
	public BigInteger factorial(int n) throws RemoteException;
}

Attention : on implantera le calcul de fibonacci de manière itérative et non récursive !

Exercice 4.2

Mettre au point la partie client, celle-ci appellera le serveur et affichera dans le terminal, le résultat des calculs de :

  • fibonacci(60) = 1548008755920
  • factorielle(24) = 620448401733239439360000

Exercice 4.3

Tester entre deux machines différentes.

Exercice 4.4

Ajouter un nouveau service au serveur pour pouvoir soumettre un ensemble de calculs au serveur

public void compute(InputData d) throws RemoteException;

La classe InputData, contient un tableau d'entiers pour lesquels on calculera la factorielle. Aucun résultat n'est retourné au client, le résultat des calculs sera affiché du côté serveur.

Exercice 4.5

Ajouter un nouveau service au serveur pour pouvoir soumettre un calcul avec retour de résultats :

public Result compute(int n) throws RemoteException;

La classe Result, contient le résultat des calculs de fibonacci et factorielle pour la valeur n passée en paramètre.

Exercice 4.6

Créer une Applet qui permet de spécifier la valeur de n dans un JTextField, de cliquer sur un bouton pour lancer le calcul sur le serveur et d'afficher le résultat dans un JTextArea.

public Result compute(int n) throws RemoteException;

La classe Result, contient le résultat des calculs de fibonacci et factorielle pour la valeur n passée en paramètre.