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

Entrée/Sortie Java Discussion :

Problème avec RMI


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2011
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 18
    Par défaut Problème avec RMI
    Bonjour,
    j'ai un petit problème avec RMI :

    j'ai deux packages client et server,



    le package client contient une interface "I_object" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    package client;
     
    import java.rmi.Remote;
    import java.rmi.RemoteException;
     
    public interface I_object extends Remote {  
        public int Add(int a,int b) throws RemoteException;
    }

    et une class main_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
    package client;
    import java.net.MalformedURLException;
    import java.rmi.Naming;
    import java.rmi.NotBoundException;
    import java.rmi.RemoteException;
     
    /**
     *
     * @author marwen
     */
    public class main_client {
     
     
        public static void main(String [] args) throws NotBoundException, MalformedURLException, RemoteException{
     
         I_object obj_distant=(I_object) Naming.lookup("rmi://localhost:1000/exemple");
     
         System.out.println(obj_distant.Add(5, 9));    
     
        }
    }

    pour le package server j'ai une implementation de l'interface I_object, impl_object:
    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
     
    package server;
     
    import java.rmi.RemoteException;
    import java.rmi.server.UnicastRemoteObject;
     
     
    /**
     *
     * @author marwen
     */
    public class impl_object  extends UnicastRemoteObject implements I_object {
     
        public impl_object() throws RemoteException
        {}
     
        public int Add(int a,int b) throws RemoteException{
        return a+b;
        }
     
    }


    et enfin un main_server :
    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
    package server;
     
    import java.net.MalformedURLException;
    import java.rmi.Naming;
    import java.rmi.NotBoundException;
    import java.rmi.RemoteException;
     
    /**
     *
     * @author marwen
     */
    public class main_server {
     
        public static void main(String [] args) throws NotBoundException, MalformedURLException, RemoteException{
            impl_object obj=new impl_object();
     
           java.rmi.registry.LocateRegistry.createRegistry(1000);
     
           Naming.rebind("rmi://localhost:1000/exemple", obj);
     
        System.out.println("server is running");
        }
    }


    Mon problème ce n'est pas avec le code , mais plutot avec l'interface "I_object" , si vous avez remarqué dans l’implémentation de cette interface , "impl_object " j'ai pas mis un "import client.I_object;" pourquoi ??
    justement si je met un import vers le package client , le server donc sera "lié" a ce client(cad on doit mettre toujours le package client pré le package server pour que le server puisse connaitre la structure de I_object...)
    MAIS lorsque je sépare le client et le server (je met le server sur un ordinateur distant et le client chez moi ) ????
    PAR CONTRE si je met "import client.I_object;" dans impl_object ça marche trés bien....
    voila quelqu'un peut m'expliquer , j'ai tort ?

    Merci

  2. #2
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 46
    Par défaut
    Bonsoir marwen109,

    l'interface "I_object", tu dois le mettre dans le package client ET dans le package serveur.

    De cette façon tu peux mettre ton serveur (le package entier y compri l'interface I_object) sur une autre machine sans problème.

  3. #3
    Membre averti
    Inscrit en
    Février 2011
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 18
    Par défaut
    Citation Envoyé par dark_meteor Voir le message
    Bonsoir marwen109,

    l'interface "I_object", tu dois le mettre dans le package client ET dans le package serveur.

    De cette façon tu peux mettre ton serveur (le package entier y compri l'interface I_object) sur une autre machine sans problème.
    Bonsoir dark meteor ,
    Merci pour la réponse ^^ , bon j'ai passé toute la journée face a ce problème mais , enfin j'ai trouvé la réponse ....

    j'ai testé ceci localement sur une seul JVM , j'ai pas un autre pc pour le moment...
    quelle sont les problèmes qu'ils peut me rencontrer ??
    c'est quoi le " policy file " ? ce fichier est obligatoire ou c'est une question de sécurité ??

  4. #4
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 46
    Par défaut
    Avec ce que tu as, je ne pense pas que tu auras de problèmes. Maintenant si tu trouves un autre pc pour tester tu n'auras qu'à remplacer le "localhost" dans le lookup de ton client par le nom de la machine distante qui contiendra, dans un projet java, ton package serveur (interface+main_server+classe d'implémentation), sans oublier de supprimer ce package du projet contenant ton client avec l'interface.
    (pour simuler tu peux tester avec deux projets sur la même machine)

    le policy file je ne l'ai jamais utilisé mais je sais qu'il est utilisé pour sécuriser, il n'est pas obligatoire pour assurer la marche en utilisant RMI mais ça reste un bon truc de sécurité.

    @+

  5. #5
    Membre averti
    Inscrit en
    Février 2011
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 18
    Par défaut
    Citation Envoyé par dark_meteor Voir le message
    Avec ce que tu as, je ne pense pas que tu auras de problèmes. Maintenant si tu trouves un autre pc pour tester tu n'auras qu'à remplacer le "localhost" dans le lookup de ton client par le nom de la machine distante qui contiendra, dans un projet java, ton package serveur (interface+main_server+classe d'implémentation), sans oublier de supprimer ce package du projet contenant ton client avec l'interface.
    (pour simuler tu peux tester avec deux projets sur la même machine)

    le policy file je ne l'ai jamais utilisé mais je sais qu'il est utilisé pour sécuriser, il n'est pas obligatoire pour assurer la marche en utilisant RMI mais ça reste un bon truc de sécurité.

    @+

    Bonjour ,
    j'ai essayé de faire deux projets mais une exception qui insulte en anglais....
    ça marche pas ,,,,


    Merci quand même

  6. #6
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 46
    Par défaut
    il faut que l'interface du client et celui du serveur soient dans des packages ayant le même nom.

Discussions similaires

  1. Problème avec RMI sur différents réseaux
    Par Skip57437 dans le forum Entrée/Sortie
    Réponses: 0
    Dernier message: 11/02/2015, 15h31
  2. Problème avec RMI
    Par montis dans le forum Débuter avec Java
    Réponses: 34
    Dernier message: 09/01/2012, 23h02
  3. probléme avec Rmi besoin d'aide
    Par seifdev dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 27/12/2009, 06h27
  4. Problème avec RMI connection avec JBOSS
    Par nakata77 dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 29/01/2007, 23h25
  5. [RMI] Problème de RMI avec TomCAT 5.5 et jre1.5.0_06
    Par YokoSop dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 08/03/2006, 09h57

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