0% ont trouvé ce document utile (0 vote)
290 vues25 pages

CORBA et Java pour Développeurs

Transféré par

Majdi Boyka
Copyright
© Attribution Non-Commercial (BY-NC)
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
290 vues25 pages

CORBA et Java pour Développeurs

Transféré par

Majdi Boyka
Copyright
© Attribution Non-Commercial (BY-NC)
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Java et CORBA

• Intégré dans le JDK1.2 … : Java IDL


• … hormis idltojava à chercher au java
developer connection (~300Ko) Solaris,
Win32
• On utilise les paquetages
[Link] et
[Link] du JDK1.2

1
Architecture CORBA
• Travaux de l'OMG (Object Management
Group).
• CORBA (Common Object Request Broker
Architecture) = une architecture, des
interfaces, des protocoles, des services pour
faire communiquer des objets répartis sur
diverses machines.

2
Architecture CORBA (suite)
• Caractéristiques importantes : les objets
peuvent avoir été écrits dans des langages
de programmation distincts (essentiellement
C++, Ada95, Smalltalk, COBOL, C et
évidemment Java).
• CORBA = des spécifications, rien que des
spécifications mais toutes les spécifications

3
ORB = Object Request Broker
• ORB = ?
• ORB = Bus logiciel = ?
• ORB = pseudo-objet de bootstrap donnant
accès à la mécanique (l’univers) CORBA
(Orfali)
• ORB = un protocole orienté objet
• Parmi ces services : le Naming Service
4
naming Service = Service de
nommage
• Les objets sont décrits par des noms.
• Noms rangés par arborescence

5
Initialisation : code Java
• "ORB initialization is a bootstrap call into the
CORBA world."
import [Link].*;
import [Link].*;
import [Link].*;
class LeClientOuLeServeur {
public static void main (String args[]){
Properties props = new Properties ();
[Link]("[Link]", "900");
[Link]("[Link]",
"localhost");
ORB orb = [Link]( args, props);

}

• Est équivalent à :
ORB orb = [Link]( args, null);
6
De l’ORB au Naming Service
• Les méthodes [Link](…) du JDK lance un
service de nommage NamingService (qui, par
défaut écoute localement sur le port 900 [Link]
précédente)
• On récupère ce service de nommage par :
ORB orb = [Link](...);
[Link] refNServ =
orb.resolve_initial_references("NameService");
NamingContext nc =
[Link](refNServ);

7
IDL = Interface Definition
Language
• méta langage
• langage de spécification (de déclarations)
CORBA
• Syntaxe proche de C++
• Passage des paramètres en in, out,
inout.
• Module ~ paquetage Java ~ espace de
nommage
8
IDL : un exemple
• code Java
// [Link]
module Counter {
interface Count {
attribute long sum;
long increment();
};
};

9
De l’idl vers Java
• génération :
– d’une interface Java
– d’une classe Helper
– d’une classe Holder
• et très souvent (idltojava)
– d’un stub
– d’un skeleton

10
Fichiers générés
• les interfaces Java = traduction en Java des
interfaces idl = le contrat que doit implanter
le serveur = ce que le client peut demander
au serveur
• classe Helper = {méthodes} pour :
– convertir des objets CORBA en type Java
(Cast) : narrow()
– lire/écrire des objets CORBA : write(),
read() 11
Fichiers générés (suite)
• classe Holder : implémente les passages out
et inout (inexistant en Java natif).

12
Stub avec idltojava
• Stub de la forme _NomInterfaceStub
– = le représentant coté client du serveur distant.
– convertit les requêtes du client en appel au
serveur distant
– attend la réponse
– la renvoie au client.

13
Skeleton avec idltojava
• Skeleton de la forme
_NomInterfaceImplBase
– attend les requêtes
– déploie les arguments (marshalling)
– demande l’exécution au serveur
– envoie les réponses.
• sert de classe de base pour le serveur !!

14
Finalement, pour le(s)
programmeur(s), il faut :
• créer le fichier idl
• lancer idltojava sur ce fichier
• implanter le serveur (classe ...Impl) en
le dérivant du squelette _...ImplBase.
– Serveur (français) = servant (US)
• écrire le lanceur du serveur
– lanceur serveur (français) = server (US)
• écrire le client 15
A l'exécution :
• lancer le service de nommage par
tnameserv &
• exécuter le lanceur de serveur
• exécuter le client

16
Démo : calculatrice CORBA :
coté serveur
• l’interface IDL : [Link]
• génération du code Java : idltojava
[Link]
=> génération de l’interface Java, du stub et
du skeleton
• implémentation de l’interface Java (i.e. le
Serveur) : [Link]
– dérive du Skeleton
17
Démo : calculatrice CORBA :
coté serveur
• implémentation du lanceur du serveur :
[Link]
– initialisation de l ’ORB et recherche du
NamingService
– enregistrement (rebind()) du serveur auprès de
ce NamingService
– attente des clients

18
Démo : calculatrice CORBA :
coté client
• Appel dynamique par DII (Dynamic
Invocation Interface)
• client application indépendante :
[Link]

19
Démo : calculatrice CORBA :
compilation
• javac [Link]
• javac
[Link]

20
Démo : calculatrice CORBA :
exécution
• tnameserv &
• java LanceCalculette
• java DIIClientCalculette

21
Calculette : applet
• Ecriture de l ’applet
[Link]
a
• lancement par appletviewer
[Link]
l

22
Bibliographie
• Un excellent tutorial d'introduction à Java
IDL :
[Link]
.3/docs/guide/idl/[Link]
• Technologie Java IDL à Javasoft :
[Link]
jdk/idl/[Link]
• Le site de l'OMG :
[Link] 23
Bibliographie (suite)
• Java Enterprise in a nutshell. David
Flanagan, Jim Farley, William Crawford &
Kris Magnusson; ed O'Reilly. ISBN 1-
56592-483-5. Chapitre Java IDL
• Client/Server Programming with Java and
CORBA second edition. Robert Orfali, Dan
Harkey; ed Wiley. ISBN 0-471-24578-X

24
Bibliographie (suite)
• Au coeur de CORBA avec Java. Jérôme
Daniel, ed Vuibert. ISBN 2-7117-8659-5
• Java Programming with CORBA. Andreas
Vogel, Keith Duddy, ed Wiley. ISBN 0-
471-24765-0

25

Vous aimerez peut-être aussi