Client / server corba avec nameservice et avec fichier

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

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.