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 ...
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