M2 BD IA — BDED Exercice 1. Programme HelloWorld client

M2 BD IA — BDED
Semaine du 17/10 au 28/10/2011
TP 2 Les objets distribu´es CORBA
Exercice 1. Programme HelloWorld client serveur
Le but de cet exercice est de tester les capacit´
es multi-langages et multi-plate-formes de CORBA avec l’im-
plementation Orbacus (anciennement Object Broker) de Progress Software dont le code est accessible mais qui
n’est pas un logiciel libre.
1. Reprendre l’exemple simpliste Hello World vu en cours, construire l’interface IDL, impl´
ementer le ser-
veur et r´
ealiser un client (en C++), compiler chaque partie et ex´
ecuter serveur et client sur une mˆ
eme
machine.
2. R´
ep´
eter l’ex´
ecution en utilisant deux stations diff´
erentes.
3. impl´
ementer un client et un serveur en Java et tester l’ex´
ecution du client et du serveur Java.
4. Ex´
ecuter de fac¸on mixte sur des architectures diff´
erentes (OS et processeur) : client Java/serveur C++,
client C++/serveur Java.
5. Tester plusieurs clients simultan´
es sur un mˆ
eme serveur. Comment r´
esoudre les probl`
emes de concur-
rence ´
eventuel ?
Exercice 2. Mesure du temps d’invocations de m´
ethodes `
a distance
On d´
esire comparer le temps d’invocation de m´
ethodes dans une application client serveur lorsque le client
et le serveur sont sur la mˆ
eme machine puis, lorsque le client et le serveur utilisent deux machines diff´
erentes.
Pour effectuer cette mesure on lancera 1000 fois l’invocation d’une m´
ethode depuis un client vers le serveur.
On mesurera le temps de ces 1000 invocations. La m´
ethode du serveur peut se contenter d’incr´
ementer un
compteur.
Reprendre le mˆ
eme type de programme et mesure le temps d’acheminement avec JavaRMI.
Exercice 3. Invocation dynamique
Les exemples d´
evelopp´
es jusqu’`
a pr´
esent utilisent exclusivement le m´
ecanisme d’invocation statique. Au
moyen du service CosNaming de CORBA r´
ealiser une invocation dynamique avec un client en Java et un
serveur en C++.
Exercice 4. Activation et ObjectFactory
Exp´
erimentez le m´
ecanisme d’activation et le principe t´
el´
echargement de r´
ef´
erences via un serveur web.
Les fonctions n´
ecessaire `
a la r´
ealisation du programme sont d´
ecrites dans le chapitre 7 du manuel de r´
ef´
erence
d’Orbacus. Comment r´
ealiser le pattern ObjectFactory en Java ? Comparez les m´
ecanismes propos´
es avec ceux
de Java RMI.
Exercice 5. Pont RMI-CORBA
Il est possible depuis Java RMI d’invoquer des objets CORBA. D´
ecrire et tester sur un exemple simple le
m´
ecanisme propos´
e par Java.
Indications et recommandations :
Object Broker (Orbacus) peut fonctionner sur les machines SUN Solaris (SPARC et x86) et Linux Debian
6 ainsi que sous Linux Gentoo. Sous Linux et sous Solaris la version 4.3.4 est install´
ee dans le r´
epertoire
/usr/local.
Vous utiliserez le serveur kundera pour ex´
ecuter la partie Linux. Les programmes pour Solaris peuvent
tourner sur les serveurs SUN.
Suivant la machine il faut faire attention `
a mettre a jour les variables PATH,JAVA HOME,LD LIBRARY PATH,
pour d´
esigner le r´
epertoire d’installation d’Orbacus.
Les documentations sont accessibles sur le serveur depinfo http://depinfo.u-bourgogne.fr/docs/.
Reprenez les exemples d´
evelopp´
es en cours dans la documentation sp´
ecifique `
a la version 4.
La commande c++ est g´
en´
erique, la remplacer par CC pour utiliser le compilateur C++ constructeur (celui
de SUN) ou par g++ pour utiliser le compilateur C++ GNU. Sur les machines solaris, utiliser le compilateur
constructeur.
Compilation avec 4.3.4 en C/C++ :
Eric Leclercq — D´
epartement IEM — http://ufrsciencestech.u-bourgogne.fr 1
Nom Processeur type OS
genet / depinfo.u-bourgogne.fr Opteron Solaris 5.10 x86
stendhal Opteron Solaris 5.10 x86
butor Opteron Solaris 5.10 x86
eluard SPARC T1 Solaris 5.10 SPARC
celine / iem17.u-bourgogne.fr Intel Xeon Debian 5.0.9
kundera / ufrsciencestech.u-bourgogne.fr Intel Xeon Debian 6
MI104* Gentoo
TABLE 1 – Machines utilisables avec Orbacus 4.3.4
export PATH=$PATH:/usr/local/OB-4.3.4/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/OB-4.3.4/lib
c++ -c -I. -I/usr/local/OB-4.3.4/include --no-implicit-templates \
-Wall -Wno-return-type Hello.cpp
c++ -c -I. -I/usr/local/OB-4.3.4/include --no-implicit-templates \
-Wall -Wno-return-type Hello_impl.cpp
c++ -c -I. -I/usr/local/OB-4.3.4./include --no-implicit-templates \
-Wall -Wno-return-type Hello_skel.cpp
c++ -c -I. -I/usr/local/OB-4.3.4/include --no-implicit-templates \
-Wall -Wno-return-type Server.cpp
c++ --no-implicit-templates -Wall -Wno-return-type -L/usr/local/OB-4.3.4/lib -o server \
Hello.o Hello_skel.o Hello_impl.o Server.o -lOB -lsocket -lnsl
c++ -c -I. -I/usr/local/OB-4.3.4/include --no-implicit-templates \
-Wall -Wno-return-type Client.cpp
c++ --no-implicit-templates -Wall -Wno-return-type -L/usr/local/OB-4.3.4/lib -o \
client Hello.o Client.o -lOB -lsocket -lnsl
Sur les serveurs SUN avec le compilateur CC, ne pas mettre les directives de gestion de warning et ajouter pour l’´
edition
de lien (-lJTC -lpthread -lposix4)
Compilation avec OB 4.3.4 en Java :
La commande jidl --package hello Hello.idl permet de g´
en´
erer les fichiers dans un r´
epertoire
hello
Pour compiler le client et les fichier g´
en´
er´
es : javac *.java hello/*.java
Attention fixer la variable CLASSPATH et garder les variables PATH et LD LIBRARY PATH dans l’´
etat
pr´
ec´
edent c’est-`
a-dire comme si vous aviez effectu´
e un compilation en C++.
export CLASSPATH=$CLASSPATH:/usr/local/JOB-4.3.4/ob/lib
– D´
eposer tous les fichiers du client et du serveur dans le repertoire hello (qui contient les classes du
package). Pour lancer le client : java hello.Client
Dans le r´
epertoire /usr/local vous trouverez les anciens JDK
Eric Leclercq — D´
epartement IEM — http://ufrsciencestech.u-bourgogne.fr 2
1 / 2 100%

M2 BD IA — BDED Exercice 1. Programme HelloWorld client

La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !