04.07.2013 Views

Modélisation des systèmes temps-réel répartis embarqués pour la ...

Modélisation des systèmes temps-réel répartis embarqués pour la ...

Modélisation des systèmes temps-réel répartis embarqués pour la ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

II-2.2.3 RMI<br />

<strong>Modélisation</strong> <strong>des</strong> <strong>systèmes</strong> <strong>temps</strong>-<strong>réel</strong> <strong>répartis</strong> <strong>embarqués</strong><br />

L’utilisation d’un <strong>la</strong>ngage de configuration tiers tel qu’IDL permet de décrire l’adaptation de<br />

l’intergiciel indépendamment du <strong>la</strong>ngage de programmation utilisé. En contrepartie, l’utilisateur<br />

doit manipuler plusieurs <strong>la</strong>ngages et outils. D’autres intergiciels ont donc pris le parti d’extraire<br />

les interfaces à partir du <strong>la</strong>ngage de programmation. C’est le cas de Java RMI [Grosso, 2001], qui<br />

permet de décrire les entités à répartir directement au sein du programme Java.<br />

1 import java.rmi.Remote;<br />

2 import java.rmi.RemoteException;<br />

3<br />

4 public interface Calcul extends Remote {<br />

5 int addition (int a, int b) throws RemoteException;<br />

6 }<br />

Listing II.3 – interface d’une c<strong>la</strong>sse Java invocable à distance<br />

Le listing II.3 décrit <strong>la</strong> déc<strong>la</strong>ration de l’interface d’une c<strong>la</strong>sse <strong>des</strong>tinée à être invoquée à distance.<br />

Une telle interface étend simplement l’interface prédéfinie Remote.<br />

1 import java.rmi.Naming;<br />

2 import java.rmi.RemooteException;<br />

3 import java.rmi.RMISecurityManager;<br />

4 import java.rmi.server.UnicastRemoteObject;<br />

5<br />

6 public c<strong>la</strong>ss CalculImpl extends UnicastRemoteObject implements<br />

Calcul {<br />

7 public CalculImpl() throws RemoteException {<br />

8 super();<br />

9 }<br />

10<br />

11 public int addition(int a, int b) {<br />

12 return a + b;<br />

13 }<br />

14<br />

15 public static void main(String args[]) {<br />

16 if (System.getSecturiyManager() == null) {<br />

17 System.setSecurityManager(new<br />

RMISecurityManager ());<br />

18 }<br />

19<br />

20 try {<br />

21 CalculImpl obj = new CalculImpl();<br />

22 Naming.rebind("//hote/ServeurCalcul", obj);<br />

23 } catch (Exception e) {<br />

24 System.out.println("Erreur: " + e.getMessage())<br />

;<br />

25 }<br />

26 }<br />

27 }<br />

Listing II.4 – interface d’une c<strong>la</strong>sse Java invocable à distance<br />

Le listingII.4 illustre une imp<strong>la</strong>ntation de l’interface que nous avons déc<strong>la</strong>rée au listing II.3.<br />

Nous voyons que <strong>la</strong> c<strong>la</strong>sse correspond à une entité qui peut être distante : <strong>la</strong> méthode main enregistre<br />

l’objet auprès du service de nommage de RMI ; de même, le constructeur peut lever une<br />

12 c○ 2007 Thomas Vergnaud

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!