• Aucun résultat trouvé

M1 Programmation avanc´ee et r´epartie en Java : TP 8

N/A
N/A
Protected

Academic year: 2022

Partager "M1 Programmation avanc´ee et r´epartie en Java : TP 8"

Copied!
3
0
0

Texte intégral

(1)

M1 Programmation avanc´ee et r´epartie en Java : TP 8

Jean Fortin et Fr´ed´eric Gava

[email protected] ou [email protected]

1 Exercice 1 : Hello World en RMI

1. Dans un dossier tp8 (dans un src habituel), cr´eer un fichier HelloInterface.java, qui d´efinit l’interface suivante :

package tp8;

import java.rmi.*;

public interface HelloInterface extends Remote { public String say() throws RemoteException;

}

2. Dans un fichier Hello.java, d´efinir la classe suivante : package tp8;

import java.rmi.*;

import java.rmi.server.*;

public class Hello extends UnicastRemoteObject implements HelloInterface { private String message;

public Hello (String msg) throws RemoteException { message = msg;

}

public String say() throws RemoteException { return message;

} }

3. Compiler les deux fichiers ci-dessus. Depuis le dossier contenant src et class, javac -d build src/tp8/*.java

4. Compiler le rmi avec la commande

rmic -classpath build -d build tp8.Hello 5. Cr´eer l’application serveur HelloServer.java

package tp8;

import java.rmi.Naming;

public class HelloServer {

public static void main (String[] argv) { try {

1

(2)

Naming.rebind ("Hello", new Hello ("Hello World!"));

System.out.println("Server is connected and ready for operation.");

}

catch (Exception e) {

System.out.println ("Server not connected: " + e);

} } }

6. Cr´eer l’application client, HelloClient.java : package tp8;

import java.rmi.Naming;

public class HelloClient {

public static void main (String[] argv) { try {

HelloInterface hello =(HelloInterface) Naming.lookup ("//127.0.0.1/Hello");

System.out.println (hello.say());

}

catch (Exception e){

System.out.println ("HelloClient exception: " + e);}

} }

7. Compiler les fichiers

8. Ouvrir un nouveau terminal, se placer dans le dossier “class”, et lancer le programme

“rmiregistry”.

9. Ouvrir un nouveau terminal, se placer dans le dossier racine, et lancer le serveur.

java -cp build tp8.HelloServer

10. Ouvrir un nouveau terminal, se placer dans le dossier racine, et lancer le client.

java -cp build tp8.HelloClient

11. (Si tout marche bien) Modifier le client pour qu’il se connecte au serveur de votre voisin, et tester (vous pouvez personnaliser les messages).

12. Analyser les programmes pour en comprendre le fonctionnement.

2 Exercice 2 : Une base de licenci´ es en RMI

Dans cet exercice, on va d´efinir un service de gestion d’une base de licenci´es d’une f´ed´eration sportive. Pour cela, on utilisera deux classes avec des m´ethodes distantes, la classeLicencie et la classe Base.

1. D´efinir une classe Licencie, ayant comme champs priv´es un identifiant (entier), un nom (String), et une ligue (String). Les variables priv´ees sont initialis´ees dans le constructeur. On d´efinira des m´ethodes getNom, setNom, getLigue, setLigue et getID.

2. D´efinir une classeBase, contenant un ensemble de licenci´es, sous la forme d’unHashMap

<Integer,Licencie> (l’entier sert d’identifiant unique pour le Licencie), initiale- ment vide, avec des m´ethodes :

2

(3)

– int ajouteLicencie(String nom, String ligue), qui ajoute un licenci´e dans la base, et renvoie son identifiant

– void effaceLicencie(int id), qui efface un licenci´e de la base

– Licencie getLicencie(int id), qui renvoit le licenci´e `a partir de son id.

3. D´efinir les interfaces correspondants aux services pour les classes Licencieet Base.

(on incluera toutes les m´ethodes ci-dessus).

4. D´efinir les classes LicencieExporteetBaseExportee

5. D´efinir la classe Serveur, qui enregistre le service de la base sous le nom “BaseLicen- cies”.

6. D´efinir la classe Client, qui se connecte `a la base, ajoute 2 licenci´es, puis modifie le nom du premier, et v´erifie que la modification a bien ´et´e effectu´ee.

7. Tester.

3 Exercice 3 : JDBC - Sqlite

Exercice `a effectuer sous Linux. Copier le fichier jdbc.java de la page de cours. Suvre le liens vers tutorialspoint. Et essayez les exemples propos´es. Essayer de faire vous mˆeme une petite BD et d’y acc`eder comme dans l’exemple ”jdbc.java” avec Sqlite.

4 Exercice 4 : JDBC - Oracle

Cr´eer une application graphique permettant d’ex´ecuter une requˆete SELECT sur une base de donn´ee oracle et d’afficher le r´esultat. Pour cela, utilisez le driver sun du fichier

”jdbc.java”.

3

Références

Documents relatifs

— En suivant l’organisation d´ ecrite ci-dessus, la compilation des sources d’une s´ eance de TP peut se faire avec la commande suivante, en se pla¸ cant ` a la racine de

Il faut des classes final (ou record) pour maintenir la restriction de hi´ erarchie (branche) ou non−selead (mais cela limitera le

R´ ealiser en Swing un formulaire comprenant un champ de saisie, un bouton et une plage de texte (pour afficher la r´ eponse ` a la question). Utilisez un (ou plusieurs, si

dans le cas d’un mono-processeur/coeur, c’est le Thread demandeur qui ex´ ecute le code qui est actif. sinon, le temps de r´ ecup´ erer le bool´ een d’un (imaginaire) isActif(),

Cr´ eer une classe Balle, ´ etendant Thread, telle que le constructeur ajoute un JLabel dans le JPanel central ` a une position al´ eatoire, et que la m´ ethode run fasse bouger

Le thread qui ex´ ecute wait() est mis dans un pool d’attente ; quand il en sort il “revient” dans le bloc synchronized et entre en comp´ etition avec d’autres threads pour

Cr´ eer une m´ ethode lancerThread (dans la classe principale) cr´ eant un Thread bas´ e sur le Runnable ci-dessus, et le d´ emarrant4. Dans une m´ ethode main, cr´ eer un objet de

1 M´ ethodes sp´ ecifiques aux Applets et qui leur permettent de demander au navigateur des informations ou des actions li´ ees au contexte : informations sur la page HTML