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 17:30] – [Generic Engine] 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>
  
-En résumé, pour lancer votre application distribuée  :+En résumé, pour lancer votre application distribuée :
  
 <code bash> <code bash>
-server$ rmiregistry &  # ou utiliser createRegistry() dans EngineServer +# lancement serveur 
-server$ java -Djava.security.policy=all.policy EngineServer +$ cd server 
-client$ java -Djava.rmi.server.codebase=file:///$PWD/ EngineClient # avec MyTask.class dans $PWD+$ ls  
 +  all.policy  Engine.java  EngineServer.java  Task.java 
 +$ rmiregistry &  # ou utiliser createRegistry() dans EngineServer 
 +$ java -Djava.security.policy=all.policy EngineServer 
 + 
 +# lancement client 
 +$ cd client 
 +$ ls  
 +  EngineClient.java  Engine.java  MyTask.java  Task.java 
 +$ java -Djava.rmi.server.codebase=file:///$PWD/ EngineClient localhost # avec MyTask.class dans $PWD
 </code> </code>
  
 __Tutoriel__ : http://docs.oracle.com/javase/tutorial/rmi/designing.html __Tutoriel__ : http://docs.oracle.com/javase/tutorial/rmi/designing.html
-====Compléments Java====+====Fourmis====
  
-__Readline__ Pour lire une chaîne de caractères sur la ligne de commande, il faut taper un truc comme ça :+FIXME Ajouter un nouvel exo sur un programme Java simulant l'intelligence collective d'une colonie de fourmis : [[sysrep:rmi:ant | ici]].
  
-<code java> 
-BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
-try { 
-  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> 
- 
-Affiche ici :  
- 
-  this 
-  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.1381944635.txt.gz · Last modified: 2024/03/18 15:05 (external edit)