Client / server corba avec nameservice et avec fichier

Soyez le premier à donner votre avis sur cette source.

Vue 10 744 fois - Téléchargée 1 293 fois

Description

Pour créer un Client/Serveur Corba, on a deux façons:
-soit avec le NameService, la lecture de l'ORB se fait à partir de la mémoire, ça veut dire une réponse plus rapide, mais ça nécessite le lancement du NamingService.
-soit avec un fichier, dans ce cas la lecture de l'ORB se fait à partir du fichier, ça veut dire un temps de réponse moins rapide (ouverture fichier, lecture, fermeture).

Je vais vous présenter les deux manières de faire, et chacun jugera ce qui sera avantageux pour son cas.

A partir du jdk 1.4, Corba a connu quelques changements:
-Avec la jdk 1.3, Corba implémentait *Base.java, à partir de la version 1.4 elle implémente *POA.

C'est pour cela que je donne le premier exemple avec jdk 1.3 et fichier, et le deuxième exemple avec jdk 1.4 ou + et NameService.

J'espère que cela vous aidera dans vos projets.

Considérant que notre projet s'appelle exemple.

-La première donnée qu'on doit implémenter est l'interface idl (exemple.idl), c'est le contrat que doit respecter le client et le serveur.
-la syntaxe du idl est simple et proche du C++: (in pour paramètres en entrée, out pour paramètres en sortie, et inout pour paramètres en entrée et en sortie), java n'accepte pas le out tout court, ça renvoi des "null", pour cela je vous conseille d'utiliser inout à la place. module est l'équivalent du package, int=short, String=string, double=double, boolean=boolean......

Alors une fois on a préparé notre exemple.idl, on va se placer dans le répertoire où elle se trouve, par exemple:
fenêtre DOS:
> cd C:\
puis on va générer le serveur et le client avec:
>idlj -fserver *.idl
>idlj -fclient *.idl
ou bien pour générer les deux en même temps, on fait:
>idlj -fall *.idl

Vous allez chercher les classes générées dans le module que vous avez spécifié dans exemple.idl (com/corba/*.java).
Normalement on doit avoir 6 classes générées (Valable pour le client et le serveur):
- _exempleStub.java
- exemple.java
- exempleHelper.java
- exempleHolder.java
- exempleOperation.java
- (selon la version du jdk si c'est 1.3 exempleBase.java, si c'est 1.4 ou plus exemplePOA.java)
Après on doit ajouter 3 autres classes:
- Client.java
- Server.java
- exepmleImpl.java (c'est le servant qui fait la relation entre client et serveur, et il est du côté serveur).
En ce qui concerne ces 3 classes, elles sont dans le jar.

Il faut mettre les classes dans un projet java dans eclipse par exemple.

Finalement, après avoir adapter les 3 classes selon vos besoin, il suffit de démarrer le NamingService (si vous avez choisi l'exemple avec le NameService).
le NameService se démarre comme suit:
Fenêtre DOS:
> start tnameserv -ORBInitialPort 1050
- Le tnameserv est présent dans la JDK, alors pas la peine d'ajouter aucun jar.
Il faut prendre en considération le port (dans notre exemple 1050) sinon, si vous décidez de le changer, il faut penser à le changer dans la classe Server et la classe Client.

- Si vous avez décidé d'utiliser l'exemple avec le fichier, il suffit de faire attention au chemin du fichier pour que le client et le serveur pointe sur le même.

-démarrer Server.java
-démarrer le Client.java

Conclusion :


Pour l'exemple avec NamingService, il ne faut pas oublier de démarrer le Nameservice.

et bon courage :)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
vendredi 12 août 2011
Statut
Membre
Dernière intervention
30 décembre 2011

tout d'abord...c un très bon travail...bravo.....
donc je me suis intéresser....j'ai suivie tout les étapes (installation de JaCorb 2.3.0, générer les classe, démarrer le NamingService) et lors de la dernière étape celle de lancer le serveur.java (a partir du Cmd) la compilation affiche 4 erreur de même type...même chose pour le client (2 erreur tjr même type)....
donc la fichage pour le serveur:

C:\Users\Home\Desktop\CORBA>start tnameserver -ORBInitialPort 1050
Le système ne peut trouver le fichier tnameserver.

C:\Users\Home\Desktop\CORBA>start tnameserv -ORBInitialPort 1050

C:\Users\Home\Desktop\CORBA>cd C:\Users\Home\Desktop\CORBA\Server_Nameservice_1.3\src\com\corba

C:\Users\Home\Desktop\CORBA\Server_Nameservice_1.3\src\com\corba>javac Server.java

Server.java:22: cannot find symbol
symbol : class exemple_Impl
location: class com.corba.Server
exemple_Impl exemple_impl = new exemple_Impl();
^
Server.java:22: cannot find symbol
symbol : class exemple_Impl
location: class com.corba.Server
exemple_Impl exemple_impl = new exemple_Impl();
^
Server.java:30: cannot find symbol
symbol : class exemple
location: class com.corba.Server
exemple href = exempleHelper.narrow(exemple_impl);
^
Server.java:30: cannot find symbol
symbol : variable exempleHelper
location: class com.corba.Server
exemple href = exempleHelper.narrow(exemple_impl);
^
4 errors

j'aimerai bien que tu m'aide a trouvé la cause d'erreur....je te remercie d'avance
Messages postés
1
Date d'inscription
mardi 15 novembre 2011
Statut
Membre
Dernière intervention
10 décembre 2011

i like it
Messages postés
36
Date d'inscription
lundi 1 novembre 2004
Statut
Membre
Dernière intervention
11 mai 2009

Merci BRO LOVE pour tes encouragements :)
Messages postés
6
Date d'inscription
samedi 25 novembre 2006
Statut
Membre
Dernière intervention
4 novembre 2010

Félicitation pour ce petit tuto CORBA.
Bon courage à toi Guithek
Messages postés
36
Date d'inscription
lundi 1 novembre 2004
Statut
Membre
Dernière intervention
11 mai 2009

Bonjour,

Effectivement, Corba est une solution qui n'est pas jeune, mais des fois, on est contraint à l'utiliser selon le contexte sur lequel on est amené à travailler.

Personne ne peut contredire que les orientés services sont plus faciles à implémenter, mais malheureusement ils sont aussi plus lourds, par exemple la communication en WebService se fait en xml qui est lourd par rapport à la communication Corba qui s'effectue avec du binaire.

Autre désavantage de Corba, c'est les ports qu'on doit ouvrir, tant dit qu'avec les WebServices, ça suffit que le port 80 soit ouvert pour que ça marche.

Bref, chacune des deux solutions a ses avantages et ses inconvénients, reste à voir la solution la plus adaptée à notre situation.
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.