M2 BD IA — BDED
Semaine du 6/10 au 10/10/2009
TP 1 •Illustration des concepts objets distribu´es avec Java-RMI
Ce TP fera l’objet d’un compte rendu `
a r´
ealiser par binˆ
ome et `
a rendre avant le 31/10/2008 (maximum 30
pages hors code en annexe)
Exercice 1. Prise en main de Java-RMI
Le but de ce premier exercice (application directe du cours) est de prendre en main l’environnement Java-
RMI et de se familiariser avec le processus de d´
eveloppement d’applications objets distribu´
es. R´
ealiser le pro-
gramme client serveur HelloWolrd vu en cours.
1. Tester l’ensemble sur une seule machine.
2. Observer la g´
en´
eration du stub et du squelette avec les JDK 1.4 et 1.5 ou 1.6, que constatez vous ? Quelles
sont les ´
evolutions d’un JDK `
a l’autre ? Compl´
eter vos observation en utilisant la commande rmic --
keep
3. S´
eparer le code du client et celui du serveur dans deux r´
epertoires, quels sont les fichiers n´
ecessaires `
a
chacun pour la compilation et pour l’ex´
ecution ?
4. Recompiler client et serveur avec la mˆ
eme version de JDK, lancer le serveur et le client sur deux machines
diff´
erentes de mˆ
eme architecture.
5. R´
ep´
eter l’op´
eration pr´
ec´
edente sur deux machines d’architecture diff´
erentes en prenant garde d’activer
la mˆ
eme version de la machine virtuelle.
6. Peut-on utiliser 3 machines afin d’avoir un r´
ef´
erentiel d’interfaces s´
epar´
e, que constatez-vous ?
7. Modifier le code de votre application afin de mettre en place le t´
el´
echargement automatique de classes via
un serveur Web. Utiliser votre r´
epertoire public html afin de permettre le partage des classes depuis
l’un des serveurs ufrsciencestech/kundera ou depinfo/genet.
8. Exp´
erimenter la m´
ethode LocateRegistry, r´
esumer son fonctionnement.
9. Qu’est ce que le service JNDI propos´
e dans Java EE, quelles sont les relations entre JNDI et Java RMI.
Exercice 2.
R´
ealiser un programme de simulation de gestion de compte bancaires. Vous devez obligatoirement adopter
une approche objet et d´
efinir une classe compte permettant la cr´
eation d’un compte, proposant les op´
erations
de d´
epˆ
ot, retrait, affichage du solde et permettant un archivage des op´
erations effectu´
ees.
– Lancer plusieurs clients simultan´
ement. Que se passe-t-il ? Comment est (doit-ˆ
etre) g´
er´
ee la concurrence ?
– Comment r´
ealiser une application qui g`
ere 200 000 comptes ? Exp´
erimentez le pattern de d´
eveloppement
ObjectFactory.
– Que se passe t’il cˆ
ot´
e client si le serveur est arrˆ
et´
e puis relanc´
e ? Quelles solutions peut-on envisager pour
r´
esoudre ce probl`
eme ?
– Exp´
erimentez les fonctionnalit´
es fournies par le package activation.
– Utiliser les r´
ef´
erences persistantes du m´
ecanisme d’activation. ´
A quel type de probl`
emes sont-elles une
solution ?
Exercice 3. Objets mobiles
– Reprendre l’exercice pr´
ec´
edent, envoyer `
a la demande du client un objet compte et effectuer le calcul du
solde sur le client.
– R´
ealiser le programme de serveur g´
en´
erique permettant la mobilit´
e des objets Java (exemple du cours).
– Modifier le programme afin de r´
ealiser un objet mobile pouvant se d´
eplacer de serveur en serveur en
utilisant une route d´
ecrite dans un fichier ou dans un tableau.
Exercice 4. Objets distribu´
es et persistance
– Reprendre l’exercice 2, stocker les valeurs des attributs d’un compte et les transactions r´
ealis´
ees dans un
base de donn´
ees au moyen d’un connexion JDBC
– Identifier les probl`
emes de concurrence et de synchronisation.
– En d´
eduire des r`
egles de programmation.
Eric Leclercq — D´
epartement IEM — http://ufrsciencestech.u-bourgogne.fr 1