public cl a ss AgentClient
{public s t a ti c void main ( Stri ng [ ] argv ) / / argv [0]== machine ser veu r
/ / argv [1]== por t
{try
{/ / Phase d ’ i n i t i a l i s a t i o n :
/ / 1 L ia iso n à l ’ o b je t d i s t r i b u é s e rv eu r de code mobile
/ / 2 Migration du code sous l a forme d ’ un o b je t
St rin g u rl = " rmi : / / " +argv [0]+ " :" +argv [ 1 ] ;
System . out . p r i n t l n (" > Lancement du c l i e n t " ) ;
/ / Pour c o n t ro l e r l e s c hargements dynamiques ( f i c h i e r a gen ts . p ol ic y )
System . setSecurityManager (new RMISecurityManager ( ) ) ;
/ / Récupération de l a réfé r e n c e du se rve ur
AgentFactory a f = ( A gentFactory ) Naming . lookup ( u r l + " / Ag entFactory " ) ;
System . out . p r i n t l n (" > On a obtenu l a r éf é re n ce du Serveur " ) ;
Object a = af . getAgent ( ) ; / / Migration du code , a e s t l ’ i ns tance
/ / On u t i l i s e le code mobile obtenu
Class cl = a . g etC las s ( ) ; / / On récupère la c l a s s e de l ’ o b j e t qui
/ / a migré .
System . out . p r in t ln ( " Classe de l ’ obje t obtenu : "+ cl . getName ( ) ) ;
System . out . p r i n t l n (" > L’ agent mobile e s t obtenu " ) ;
Method ou = cl . getMethod ( " douViensTu " , null ) ; / / On cherche l a méthode douViensTu ( )
/ / puis on invoque la méthode
System . out . p r i n t l n ( "L’ agent v ien s de : "+ ou . invoke ( a , null ));
ou = c l . getMethod ( " ouEsTu " , null ) ;
System . out . p r i n t l n ( " M aintenant l ’ agent e s t en : " + ou . invoke ( a , null ));
Method getDonnee = cl . getMethod ( " getDonnee " , null ) ;
System . out . p r i n t l n ( "Donnee avant c a l cu l : " + ( ( I n te g e r ) getDonnee . invoke ( a , null ) ) . intValue ( ) ) ;
cl . getMethod ( " calc ul e " , null ) . invoke ( a , null ) ;
System . out . p r i n t l n (" > L’ agent mobile c a lc u l e " ) ;
getDonnee = cl . getMethod ( " getDonnee " , null ) ;
System . out . p r i n t l n ( "Donnee a pr ès c a lc u l : " + ( ( I n te g er ) getDonnee . invoke ( a , null ) ) . intValue ( ) ) ;
/ / On renvoie le code au ser veu r
af . s etAgent ( a ) ;
System . out . p r i n t l n (" > L’ agent e s t r e p a r t i " ) ;
}
catch ( Exception e )
{System . out . p r i n t l n ( " E xception i n t e r c e p t é e " + e ) ;
e . p rin tSt ack Tra ce ( ) ;
}
}
}
Université du Havre