IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

client RMI comment cela fonctionne-t-il?


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 6
    Points
    6
    Par défaut client RMI comment cela fonctionne-t-il?
    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?

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    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

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 6
    Points
    6
    Par défaut
    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.

  4. #4
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    Citation Envoyé par manux53 Voir le message
    java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:1099 connect,resolve) lors du lancement du serveur d’écho
    ça c'est le registry qui est déjà lancé ou qui n'a pas les droits pour être lancé.
    (remarque le cours cité en référence n'est plus à jour: ça fait un bon bout de temps qu'il n'y a plus de génération de Stub (et encore plus longtemps qu'il n'y a plus de Skeleton).
    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)

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    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

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 6
    Points
    6
    Par défaut
    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.

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    t'as pas répondu à la question de base: applet?

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 6
    Points
    6
    Par défaut
    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!

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 6
    Points
    6
    Par défaut
    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.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 6
    Points
    6
    Par défaut allo
    y a quelqu'un pour m'aider je vous donne les codes serveur:


    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
     
     
    }
    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
    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);
     
     
    			}
     
    	}
     
    }

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Points : 6
    Points
    6
    Par défaut Resolu
    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 :

    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");
            }
    et pour information le stub est générer automatiquement comme fait dans le code et le skeleton n'est plus utilisé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment cela fonctionne ?
    Par AuraHxC dans le forum Bibliographies - Index - Glossaires
    Réponses: 2
    Dernier message: 09/11/2009, 12h01
  2. ouinon comment cela fonctionne ?
    Par chapeau_melon dans le forum WinDev
    Réponses: 5
    Dernier message: 19/02/2008, 11h16
  3. snprintf comment cela fonctionne?
    Par deck_bsd dans le forum C
    Réponses: 3
    Dernier message: 24/11/2006, 15h20
  4. [Berkley DB] Comment cela fonctionne ?
    Par saidus dans le forum Autres SGBD
    Réponses: 1
    Dernier message: 22/02/2006, 17h49
  5. [Caml] Du mal à comprendre comment cela fonctionne...
    Par Sir Caedes dans le forum Caml
    Réponses: 16
    Dernier message: 05/01/2006, 11h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo