De la même manière que tu l'as fait pour la configuration du client (dans les paramètres de la VM).
De la même manière que tu l'as fait pour la configuration du client (dans les paramètres de la VM).
voila j'ai appliqué tes consignes puis j'ai commencé mes manœuvres
1- je lance le serveur voila ce qui se passe :
2-puis je lance le client:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Mise en place du Security Manager ... Enregistrement du serveur Serveur lancé
je pense que c bon ca marche n'est ce pas ? mais le seul truc qui me chiffonne c'est pour le message "bonjour" ne s'affiche pas !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part TestRMI
enfin bref merci beaucoup
Le client TestRMI ou TestClient ?
Dans la classe TestClient, il y a un "catch (Exception e)". Si une exception se produit, est-ce qu'elle est affichée ? (C'est un sujet qui a déjà été abordé en début de discussion, mais je suis étonné que ça ne fonctionne pas chez toi et c'est la seule piste que je vois.)
le client c'est la classe TestClient.java
et non elle ne s'affiche plus maintenant car le probleme s'est résolue je pense chui pas un expert en java j'en métrise que 25% j'apprends le RMI car au prochain seumestre a la fac je l'aurai en tp alors je veux pas trop galéré voila je vous explique tous ca pour que vous sachiez pkoi parfois je reponds mal a vos questions
J'suis perplexe.
Tu peux reposter le code de tes 4 classes ?
J'me permets une remarque : au lieu de "foncer" sur RMI ainsi, est-ce qu'il ne serait pas plus judicieux de mieux assimiler le java. Les exceptions par exemple car tu ne semblais pas forcément le maitriser ou le mode debug pour debugguer tes programmes. Ca pourrait faire partie des bases à assimiler avant RMI.
Après, vu que je ne connais pas le contexte, je te laisse voir ce qui peut être le mieux pour toi.
pas de soucis du moment que vous m'aidiez c'est le plus important
Information.java
TestRMIServeur.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 package test_rmi; import java.rmi.*; public interface Information extends Remote { public String getInformation() throws RemoteException; }
TestServeur.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package test_rmi; import java.rmi.*; import java.rmi.server.*; public class TestRMIServer extends UnicastRemoteObject implements Information { protected TestRMIServer() throws RemoteException { super(); } public String getInformation()throws RemoteException { return "bonjour"; } }
TestClient.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 package test_rmi; import java.rmi.Naming; public class TestServeur { public static void main(String[] args) { try { java.rmi.registry.LocateRegistry.createRegistry(1099); System.out.println("Mise en place du Security Manager ..."); System.setSecurityManager(new java.rmi.RMISecurityManager()); TestRMIServer testRMIServer = new TestRMIServer(); System.out.println("Enregistrement du serveur"); Naming.rebind("rmi://"+java.net.InetAddress.getLocalHost()+ "/TestRMI",testRMIServer); //Naming.rebind(";rmi://localhost/TestRMI", testRMIServer); System.out.println("Serveur lancé"); } catch (Exception e) { System.out.println("Exception capturée: " + e.getMessage()); } } }
Voila svp g une autre question pkoi le message "bonjour" ne s'affiche pas ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 package test_rmi; import java.rmi.Naming; import java.rmi.RMISecurityManager; import java.rmi.Remote; public class TestClient { public static void main(String[] args) { System.setSecurityManager(new RMISecurityManager()); try { Remote r = Naming.lookup("rmi://127.0.0.1/TestRMI"); if (r instanceof Information) { String s = ((Information) r).getInformation(); System.out.println("chaine renvoyée = " + s); } } catch (Exception e) { System.out.println(e.getMessage()); } } }
Cordialement
Reprends le post du 07/01/2012 à 11h16 et fais la modification conseillée.
Et "bonjour" devrait s'afficher.
voila g ajouté cette instruction :
dans le catch de la classe TestClient.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part e.printStackTrace();
TestClient.java
et voila la reponse donné apres relancemant du serveur et execution de la classe TestClient.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 package test_rmi; import java.rmi.Naming; import java.rmi.RMISecurityManager; import java.rmi.Remote; public class TestClient { public static void main(String[] args) { System.setSecurityManager(new RMISecurityManager()); try { Remote r = Naming.lookup("rmi://127.0.0.1/TestRMI"); if (r instanceof Information) { String s = ((Information) r).getInformation(); System.out.println("chaine renvoyée = " + s); } } catch (Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); } } }
Qu'est ce que vous en pensez ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 TestRMI java.rmi.NotBoundException: TestRMI at sun.rmi.registry.RegistryImpl.lookup(Unknown Source) at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source) at sun.rmi.server.UnicastServerRef.oldDispatch(Unknown Source) at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source) at sun.rmi.transport.Transport$1.run(Unknown Source) at sun.rmi.transport.Transport$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Unknown Source) at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source) at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source) at sun.rmi.server.UnicastRef.invoke(Unknown Source) at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) at java.rmi.Naming.lookup(Unknown Source) at test_rmi.TestClient.main(TestClient.java:14)
Je pensais à ce bout de code :
Mais maintenant je comprends le message "TestRMI"....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Remote r = Naming.lookup("rmi://" + java.net.InetAddress.getLocalHost() + "/TestRMI");
Change le remote comme montré et relance le client.
Et pour répondre à ta question : j'en pense que RMI ne trouve pas ce qu'il souhaite en face car le remote n'est pas défini de la même manière que le serveur.
Besoin d'une précision : tu avais bien lancé la commande "rmic ..." comme indiqué dans le tutoriel que tu suis ?
c bon g corrigé la classe TestClient.java
stp pardon de te rederanger mais comment on fait pour arrêter le serveur après qu'il soit lancer ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 package test_rmi; import java.rmi.Naming; import java.rmi.RMISecurityManager; import java.rmi.Remote; public class TestClient { public static void main(String[] args) { System.setSecurityManager(new RMISecurityManager()); try { Remote r = Naming.lookup("rmi://"+java.net.InetAddress.getLocalHost()+"/TestRMI"); if (r instanceof Information) { String s = ((Information) r).getInformation(); System.out.println("chaine renvoyée = " + s); } } catch (Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); } } }
Ca fonctionne maintenant ?
Juste au dessus de la console Eclipse (là où tu vois les messages défiler), il y a un icône avec légende "Display selected console". Tu choisis la console de ton serveur.
Ensuite, le bouton "Stop" s'affichera et tu pourras arrêter le serveur.
c bon g corrigé la classe TestClient.java
j'ai éxécuté et voila la reponse :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 package test_rmi; import java.rmi.Naming; import java.rmi.RMISecurityManager; import java.rmi.Remote; public class TestClient { public static void main(String[] args) { System.setSecurityManager(new RMISecurityManager()); try { Remote r = Naming.lookup("rmi://"+java.net.InetAddress.getLocalHost()+"/TestRMI"); if (r instanceof Information) { String s = ((Information) r).getInformation(); System.out.println("chaine renvoyée = " + s); } } catch (Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); } } }
stp pardon de te rederanger mais comment on fait pour arrêter le serveur après qu'il soit lancer ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part chaine renvoyée = bonjour
Voilà une bonne nouvelle.
Pour arrêter le serveur, tu as la réponse dans le post précédent.
Je te laisse marquer la discussion comme "résolue" et bonne continuation !
Benoit
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager