User Tools

Site Tools


sysrep:rmi

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
sysrep:rmi [2013/10/16 16:51] – [Hello World] orelsysrep:rmi [2024/03/18 15:06] (current) – external edit 127.0.0.1
Line 99: Line 99:
  
   * Modifez l’interface "Hello" en ajoutant de nouvelles méthodes, comme par exemple :   * Modifez l’interface "Hello" en ajoutant de nouvelles méthodes, comme par exemple :
-    * String sayHello() throws RemoteException; 
     * String sayEcho(String echo) throws RemoteException;     * String sayEcho(String echo) throws RemoteException;
   * Ajoutez la méthode suivante, qui manipule le type //Message// défini par l'utilisateur. Dans ce dernier cas, le type Message doit hériter de l'interface "java.io.Serializable"   * Ajoutez la méthode suivante, qui manipule le type //Message// défini par l'utilisateur. Dans ce dernier cas, le type Message doit hériter de l'interface "java.io.Serializable"
Line 130: Line 129:
 __Exercice__ :   __Exercice__ :  
   * Faire une proposition d'architecture en spécifiant le ou les interfaces. Faites la valider par l'enseignant avant de commencer l'implantation...   * Faire une proposition d'architecture en spécifiant le ou les interfaces. Faites la valider par l'enseignant avant de commencer l'implantation...
-  * Implantation. Utilisez les compléments Java fournis à la fin de cette page ;-)+  * Implantation. Utilisez les compléments Java disponibles [[sysrep:java|ici]] ;-)
   * Quelques éléments de correction pour vous aider : [[sysrep:rmi-correction|ici]]   * Quelques éléments de correction pour vous aider : [[sysrep:rmi-correction|ici]]
  
Line 179: Line 178:
 </code> </code>
  
-__Tutoriel__ http://docs.oracle.com/javase/tutorial/rmi/designing.html+En résumé, pour lancer votre application distribuée :
  
-====Compléments Java====+<code bash> 
 +# lancement serveur 
 +$ cd server 
 +$ ls  
 +  all.policy  Engine.java  EngineServer.java  Task.java 
 +$ rmiregistry &  # ou utiliser createRegistry() dans EngineServer 
 +$ java -Djava.security.policy=all.policy EngineServer
  
-__Readline__ : Pour lire une chaîne de caractères sur la ligne de commande, il faut taper un truc comme ça : +# lancement client 
- +$ cd client 
-<code java> +$ ls  
-BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); +  EngineClient.java  Engine.java  MyTask.java  Task.java 
-try { +$ java -Djava.rmi.server.codebase=file:///$PWDEngineClient localhost # avec MyTask.class dans $PWD
-  String msg = in.readLine(); +
-} catch(IOException e) { /* ... */ } +
-</code>     +
- +
-__StringTokenizer__ Pour décomposer une chaîne de caractères en mots (les //tokens//) : +
- +
-<code java> +
-StringTokenizer st = new StringTokenizer("this is a test"); +
-while (st.hasMoreTokens()) System.out.println(st.nextToken());+
 </code> </code>
  
-Affiche ici +__Tutoriel__ http://docs.oracle.com/javase/tutorial/rmi/designing.html 
 +====Fourmis====
  
-  this +FIXME : Ajouter un nouvel exo sur un programme Java simulant l'intelligence collective d'une colonie de fourmis : [[sysrep:rmi:ant | ici]].
-  is +
-  a +
-  test+
  
- 
-__HashMap and Generics__ : Voici un petit exemple d'utilisation des Generics avec les HashMap.  
- 
-<code java> 
-HashMap<Integer,String> map = new HashMap<Integer,String>(); 
-map.put(1, "Ian"); 
-map.put(2, "Scott"); 
-String name = map.get(2) 
- 
-for (Integer key : map.keySet())   
-  System.out.println("key = " + key + ", value = " + map.get(key)); 
-</code>          
- 
-__Intrinsic Locks and Synchronization__ : En java chaque objet dispose d'un verrou intrinséque (mutex), qui est utile pour synchroniser l'accès au champs d'un objet via de multiple threads. Soit on déclare une méthode comme "synchronized", l'exclusion porte alors sur tout la méthode : 
- 
-<code java>      
-class FooBar { 
-  synchronized void foo() { ...} 
-  synchronized void bar() { ...} 
-} 
-</code> 
- 
-Soit on déclare un bloc de code "synchronized", en précisant explicitement l'objet qui fournit le lock. 
- 
-<code java> 
-Object lock = new Object; 
-synchronized(lock) {  
-  ... 
-  ... 
-} 
-</code> 
  
sysrep/rmi.1381942310.txt.gz · Last modified: 2024/03/18 15:05 (external edit)