M2 BD IA — BDED Exercice 1. Prise en main de Java

publicité
M2 BD IA — BDED
Semaine du 6/10 au 10/10/2009
TP 1 • Illustration des concepts objets distribués avec Java-RMI
Ce TP fera l’objet d’un compte rendu à réaliser par binôme et à 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 JavaRMI et de se familiariser avec le processus de développement d’applications objets distribués. Réaliser le programme client serveur HelloWolrd vu en cours.
1. Tester l’ensemble sur une seule machine.
2. Observer la génération du stub et du squelette avec les JDK 1.4 et 1.5 ou 1.6, que constatez vous ? Quelles
sont les évolutions d’un JDK à l’autre ? Compléter vos observation en utilisant la commande rmic -keep
3. Séparer le code du client et celui du serveur dans deux répertoires, quels sont les fichiers nécessaires à
chacun pour la compilation et pour l’exécution ?
4. Recompiler client et serveur avec la même version de JDK, lancer le serveur et le client sur deux machines
différentes de même architecture.
5. Répéter l’opération précédente sur deux machines d’architecture différentes en prenant garde d’activer
la même version de la machine virtuelle.
6. Peut-on utiliser 3 machines afin d’avoir un référentiel d’interfaces séparé, que constatez-vous ?
7. Modifier le code de votre application afin de mettre en place le téléchargement automatique de classes via
un serveur Web. Utiliser votre répertoire public html afin de permettre le partage des classes depuis
l’un des serveurs ufrsciencestech/kundera ou depinfo/genet.
8. Expérimenter la méthode LocateRegistry, résumer son fonctionnement.
9. Qu’est ce que le service JNDI proposé dans Java EE, quelles sont les relations entre JNDI et Java RMI.
Exercice 2.
Réaliser un programme de simulation de gestion de compte bancaires. Vous devez obligatoirement adopter
une approche objet et définir une classe compte permettant la création d’un compte, proposant les opérations
de dépôt, retrait, affichage du solde et permettant un archivage des opérations effectuées.
– Lancer plusieurs clients simultanément. Que se passe-t-il ? Comment est (doit-être) gérée la concurrence ?
– Comment réaliser une application qui gère 200 000 comptes ? Expérimentez le pattern de développement
ObjectFactory.
– Que se passe t’il côté client si le serveur est arrêté puis relancé ? Quelles solutions peut-on envisager pour
résoudre ce problème ?
– Expérimentez les fonctionnalités fournies par le package activation.
– Utiliser les références persistantes du mécanisme d’activation. Á quel type de problèmes sont-elles une
solution ?
Exercice 3. Objets mobiles
– Reprendre l’exercice précédent, envoyer à la demande du client un objet compte et effectuer le calcul du
solde sur le client.
– Réaliser le programme de serveur générique permettant la mobilité des objets Java (exemple du cours).
– Modifier le programme afin de réaliser un objet mobile pouvant se déplacer de serveur en serveur en
utilisant une route décrite dans un fichier ou dans un tableau.
Exercice 4. Objets distribués et persistance
– Reprendre l’exercice 2, stocker les valeurs des attributs d’un compte et les transactions réalisées dans un
base de données au moyen d’un connexion JDBC
– Identifier les problèmes de concurrence et de synchronisation.
– En déduire des règles de programmation.
Eric Leclercq — Département IEM — http://ufrsciencestech.u- bourgogne.fr
1
– Montrer comment les techniques vues dans l’exercice 2 peuvent être appliquées dans le cas de la persistance d’objets distribués.
Notes :
Plusieurs versions de J2SE (jdk) sont installées sur les serveurs, l’ensemble des stations SUN Solaris et sur
les machines Linux. Les installations résident sous /usr/local. Afin de pouvoir utiliser la version choisie,
vous devez positionner la variable d’environnement PATH comme suit et JAVA HOME :
export PATH=/usr/local/java-1.4/bin:$PATH
export JAVA_HOME=/usr/local/java-1.4
Nom externe
depinfo.u-bourgogne.fr
ufrsciencestech.u-bourgogne.fr
Nom local
genet.iem
stendhal.iem
MI105-03,08,05,10-14,16
MI105-06,07,09,17-20,23,24
kundera.iem
MI104-01 à 12
OS/Architecture
Solaris 10 x64
Solaris 10 x64
Solaris 10 SPARC
Solaris 10 x64
Debian
Fedora Core 8
JDK
JDK 1.2, 1.4, 1.5, 1.6
JDK 1.2, 1.4, 1.5, 1.6
JDK 1.4, 1.5
JDK 1.2, 1.4, 1.5, 1.6
JDK 1.4,
JDK 1.4, 1.5
Afin d’observer précisement le comportement de Java RMI, ne pas utiliser d’environnement de développement
mais un simple éditeur comme vi, xemacs, nedit ou bluefish.
Le service rmiregistry écoute par défaut sur le port 1099. Si vous partagez une machine avec d’autres
binômes, utiliser un autre port.
Eric Leclercq — Département IEM — http://ufrsciencestech.u- bourgogne.fr
2
Téléchargement