Cr´eation d’un application distribu´ee
Principes de mise en oeuvre
Relais
Relais
Le client (stub) (avant java 1.5)
Le client appelle une m´ethode par le relais plac´e chez le client
Repr´esentant local de l’objet appel´e
Il emballe les donn´ees `a emettre et d´eballe les donn´ees re¸cues
communique par le skeleton
Le stub n’existe plus depuis java 1.5
Le serveur (skeleton) (avant java 1.4)
il d´eballe les donn´ees re¸cues et les transmet `a l’objet local
Il emballe les donn´ees de retour
Le skeleton n’existe plus depuis java 1.4
G´en´eration automatique des stubs et skeleton par l’utilitaire rmic sur
l’impl´ementation compil´ee
rmic TrucDistantImpl
E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 9 / 15
Cr´eation d’un application distribu´ee
Principes de mise en oeuvre
Enregistrement / Recherche : Naming
Enregistrement / Recherche : Naming
La classe Naming :
enregistrer un objet serveur
diffuser des r´ef´erences `a des objets d’un registre distant (comme
rmiregistry, JNDI, ...).
avec adresse = ”rmi ://host :port/nom” ou ”//host/nom” ou . . . et
nom = nom de l’objet dans l’annuaire
bind(adresse, objet) : enregistre objet dans l’annuaire sous le nom de
l’adresse
rebind(adresse, objet) : enregistre un nouvel objet dans l’annuaire sous
nom d´ej`a donn´e
unbind(adresse, objet) : desinscrit l’objet de l’annuaire sous l’adresse
donn´ee
list() : retourne tous les enregistrements d’objets
lookup(adresse) : retourne une r´ef´erence `a l’objet distant sp´ecifi´e dans
adresse
E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 10 / 15
Cr´eation d’un application distribu´ee
Principes de mise en oeuvre
Exemple d’Enregistrement
D´emarrer l’annuaire : lancer rmiregistry
// Le s e r v e u r :
p u b l i c c l a s s L e S e r v e u r {
p u b l i c s t a t i c v o id main ( S t r i n g [ ] a r g s )
{
t r y {
// C r ´e a t i o n d ’ un o b j e t a r e n d r e a c c e s s i b l e :
T r u c D i s t a n t I m p l t r u c = new T r u c D i s t a n t I m p l ( ) ;
// p u b l i c a t i o n de l ’ o b j e t d an s l ’ a n n u a i r e
j a v a . rmi . Naming .b i n d (” rmi : / / l o c a l h o s t /UnTruc ” , t r u c ) ;
System . o u t . p r i n t l n ( ” S e r v e u r l a n c ´e . ” ) ;
}
c a t c h ( E x c e p t i o n e ) {
System . o u t . p r i n t l n ( ” E x c e p t i o n l e v ´e e : ” + e . g etMessage ( ) ) ;
}}}
E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 11 / 15
Cr´eation d’un application distribu´ee
Principes de mise en oeuvre
Exemple de Recherche : Naming
// Le c l i e n t :
p u b l i c c l a s s L e C l i e n t {
p u b l i c s t a t i c v o id main ( S t r i n g [ ] a r g s ) {
t r y {
// r ´e c u p ´e r e r un o b j e t de ty pe T r u c Di st an t ( i n t e r f a c e )
T r u c D i s t a n t t r u c = ( T r u c D i s t a n t ) j a v a . r mi . Naming .l o o k u p (” rmi : / /
l o c a l h o s t /UnTruc ” ) ;
System . o ut . p r i n t l n ( ” c h ai n e r e c u p e r e e : ” + t r u c . donneChaine ( ) ) ;
}
c a t c h ( E x c e p t i o n e ) {System . out . p r i n t l n ( e ) ; }
} }
E. ADAM (University of Valenciennes) Java Avance 25 mars 2008 12 / 15