Bonjour a tous!
j'ai trouvé comment coder le serveur et j'ai compris !
Mais je ne comprends pas le côté client.
Comment le coder?
Bonjour a tous!
j'ai trouvé comment coder le serveur et j'ai compris !
Mais je ne comprends pas le côté client.
Comment le coder?
merci de penser à consulter les FAQs et cours du site avant de poser vos questions:
http://jmdoudoux.developpez.com/cour...-rmi.php#rmi-6
http://bruce-eckel.developpez.com/li...&page=7#07.040
merci modérateur.
mais j'ai déjà lus tous ces cours et je ne suis pas plus avancée!!!
j'ai ce message :
java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:1099 connect,resolve) lors du lancement du serveur d’écho
merci d'avance de votre aide.
J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
(mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)
acces denied, security exception: tu n'as pas les droit. Ton serveur echo ne serait pas une applet, par hasard? Les applet ne peuvent pas devenir des serveur ou se connecter à des serveur autre que celui de la page web.
@professeur: merci, j'avais pas remarqué sur le coup
une version à jour en anglais :
http://java.sun.com/javase/6/docs/te...rmi/index.html
Pour le rmiregistry j'ai vu qu'on pouvait lancé ce registre avec la ligne:
LocateRegistry.getRegistry();
et pour les droits j'ai installer un securitymanager avec la ligne :
System.setSecurityManager(new RMISecurityManager());
j'ai remarqué que quand j'enlève la ligne : Naming.rebind("moninterface",serveurEcho);
ça marche et quand je la mets ça marche pas.
Après oui cela me servira pour communiquer avec une applet mais pour l'instant c'est juste pour essayer.
je sait plus si je l'ai dit mais c'est mon serveur qui ne démarre pas!
Bon j'ai plus ou moins trouvé la réponse à ma question.
Ma méthode rebind du côté serveur je l'ai appelé avec la classe Naming et a priori ce n'est plus utilisé depuis 1999.
il faut utiliser un objet de la classe Registry pour appeler rebind.
registry.rebind(url,serveur);
Maintenant je n'ai plus qu'a finir le client! mais problème même erreur.
y a quelqu'un pour m'aider je vous donne les codes serveur:
et le code client:
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
34
35 import java.rmi.Naming; import java.rmi.registry.LocateRegistry; class CServ_RMI{ public static void main (String[] arg) { String url = "//B57B58p23/moninterface"; try { // Rmi policy System.setProperty("java.security.policy", "E:/BTS2/brehault/ServeurRMI/bin/policy"); // installation d'un gestionnaire de sécurité if (System.getSecurityManager() == null) { System.setSecurityManager(new SecurityManager()); } //lancement du rmi registry par code LocateRegistry.createRegistry(5005); //enregistrement du service rmi dans le service de NOMMAGE Naming.rebind(url,new class_serveur()); System.out.println("Serveur rmi pret"); } catch (Exception e) { System.err.println(" Erreur " + e + " lors du lancement du serveur rmi"); } }// main }
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 import java.rmi.Naming; import java.rmi.RMISecurityManager; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; public class maclasseclient { static Inter_RMI client =null; // constructeur public maclasseclient(){ }// fin constructeur /** * @param args * */ public static void main(String args[]) { try { String url = "//192.168.58.24/service:5055"; // Rmi policy System.setProperty("java.security.policy","E:/BTS2/brehault/ClientRMI/bin/security.policy"); // installation d'un gestionnaire de sécurité if (System.getSecurityManager() == null) { System.setSecurityManager(new RMISecurityManager()); } client = (Inter_RMI) Naming.lookup(url); client.Enregistrer_conf(); while(true) {} } catch (Exception e) { System.err.println("erreur"+ e); } } }
Suite a mes recherches qui ont duré quand même 3semaines j'ai tout trouvé et ça marche pour ceux qui vont peut-être galérer sur RMI je vous donne mon code:
au niveau du serveur :
et pour information le stub est générer automatiquement comme fait dans le code et le skeleton n'est plus utilisé.
Code java : 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
34
35
36
37
38
39 public void lancer() { //conf = new CConfig(); try { // Rmi policy System.setProperty("java.security.policy", "C:\\Documents and Settings\\Emmanuel\\Mes documents\\Brehault\\Application\\bin\\policy.txt"); // installation d'un gestionnaire de sécurité if (System.getSecurityManager() == null) { System.setSecurityManager(new SecurityManager()); } //lancement du rmi registry par code Registry registry = LocateRegistry.createRegistry(ServerPort); //création des objets accessible à distance CServ_RMI obj1 = new CServ_RMI(); CServ_RMI obj2 = new CServ_RMI(); CServ_RMI obj3 = new CServ_RMI(); //génération automatique des talons //1er arg nom de l'objet , 2eme numero de port ou mettre le stub Inter_RMI stub =(Inter_RMI)UnicastRemoteObject.exportObject(obj1,1099); Inter_RMI stub1 =(Inter_RMI)UnicastRemoteObject.exportObject(obj2,1099); Inter_RMI stub2 =(Inter_RMI)UnicastRemoteObject.exportObject(obj3,1099); registry.rebind("obj",stub); registry.rebind("obj1",stub1); registry.rebind("obj2",stub2); System.out.println("serveur lancé"); } catch (Exception e) { System.err.println(" Erreur " + e + " lors du lancement du serveur rmi"); }
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