0% ont trouvé ce document utile (0 vote)
112 vues2 pages

Exemple RMI

Cet exemple illustre l'utilisation de Java RMI pour manipuler des rectangles à distance. Il définit les classes Serveur, Client, IRectangle, Rectangle et RectangleImpl pour respectivement exposer un service, appeler un service, définir une interface de service, représenter un rectangle et implémenter le service de manipulation de rectangles.

Transféré par

rrmadrid99
Copyright
© © All Rights Reserved
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)
112 vues2 pages

Exemple RMI

Cet exemple illustre l'utilisation de Java RMI pour manipuler des rectangles à distance. Il définit les classes Serveur, Client, IRectangle, Rectangle et RectangleImpl pour respectivement exposer un service, appeler un service, définir une interface de service, représenter un rectangle et implémenter le service de manipulation de rectangles.

Transféré par

rrmadrid99
Copyright
© © All Rights Reserved
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

Université Kasdi Merbeh Ouargla F-NTIC/ Département Informatique

SD1/M1-ASR /2016-2017

TP6 : JAVA RMI

L'exemple servant à illustrer le fonctionnement de Java RMI traite de manipulation de


rectangles. Voici le code Java de chacune des classes définies dans cet exemple :

import [Link];
import [Link];

public class Serveur


{
public static void main(String argv[])
{
try
{
Registry r= [Link](1099);
// on instancie normalement l'objet implémentant les services
RectangleImpl rect = new RectangleImpl();
// on l'enregistre auprès du registry local sous le nom "opRect",
[Link]("opRect", rect);
// si l'enregistrement s'est bien déroulé, cet objet est prêt
// à recevoir des requêtes d'appels de services
}
catch (Exception e)
{
[Link](e);
}
}
}
-------------------------------------------------------------------------------------------------------------------------------------------
import [Link];
import [Link];

public class Client


{

public static void main(String argv[])


{

try
{ Registry reg = [Link]("localhost");
// création de rectangles pour l'appel des services
Rectangle r1, r2;
r1 = new Rectangle(10, 10, 20, 30);
// on récupère une référence sur l'objet distant nommé "opRect" via
// le registry de la machine sur laquelle il s'exécute
IRectangle opRectangle = (IRectangle) [Link]("opRect");
// on appelle les services sur cet objet
int surface = [Link](r1);
r2 = [Link](r1, 15, 10);
[Link](" surface de r1 = "+surface);
[Link](" position de r2 = "+r2);
}
catch (Exception e)
{
[Link](e);
}
} }

1/2
Université Kasdi Merbeh Ouargla F-NTIC/ Département Informatique
SD1/M1-ASR /2016-2017

---------------------------------------------------------------------------------------------------------------------------------------
import [Link];
import [Link];

public interface IRectangle extends Remote


{ public int calculSurface(Rectangle rect) throws RemoteException;
public Rectangle decalerRectangle(Rectangle rect, int x, int y) throws RemoteException;
}
----------------------------------------------------------------------------------------------------------------------------
/**
* Classe définissant un rectangle.
* (x1,y1) et (x2, y2) représentent 2 coins opposés du rectangle.
*
* Cette classe implémente Serializable car lors de l'appel à distance des
* opérations, des instances de cette classe transitent via le réseau et sont
* donc sérialisées.
*
* Note : pour simplifier l'utilisation de cette classe dans les opérations,
* tous les attributs sont publics.
*/

public class Rectangle implements [Link]


{
public int x1, x2, y1, y2;

public Rectangle(int x1, int y1, int x2, int y2)


{
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
}

public String toString()


{
return "("+x1+","+y1+")("+x2+","+y2+")";
}
}
-------------------------------------------------------------------------------------------------------------------------------------
import [Link];
import [Link];

public class RectangleImpl implements IRectangle


{
// on implémente les services comme des opérations Java standard
public int calculSurface(Rectangle rect) throws RemoteException
{
return ( (rect.x2 - rect.x1) * (rect.y2 - rect.y1));
}

public Rectangle decalerRectangle(Rectangle rect, int x, int y) throws RemoteException


{
return new Rectangle(rect.x1 + x, rect.y1 + y, rect.x2 + x, rect.y2 + y);
}

public RectangleImpl() throws RemoteException


{
[Link](this,0);
}}

2/2

Vous aimerez peut-être aussi