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 :

RMI et référencement d'objets


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 5
    Par défaut RMI et référencement d'objets
    Bonjour à tous,

    en fait j'ai deux problème légèrement opposé dans des exercices d'introductions aux RMI :


    tout d'abord, le serveur partage un objet Hello avec une méthode sayHello, le client s'y connecte, affiche le HelloWorld retourné par le serveur et se termine (le client)
    Mais par contre, le serveur ne termine jamais ça méthode main ...

    je sais que la JVM attend que l'objet Hello ne soit plus référencé nulpart avec de se terminer, or ici cette objet semble rester dans le RMIregistry, et je ne sais pas comment l'enlever ...

    Voici le code du serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                String name = "Hello";
                Hello engine = new HelloImpl();
                Registry registry = LocateRegistry.getRegistry(args[0], Integer.parseInt(args[1]));
                registry.rebind(name, engine);
     
                System.out.println("Ready to say hello !");
    (pour le moment la méthode Hello.sayHello ne fait rien d'autre que retourner "HelloWorld")

    Mon deuxieme probleme est ... que la méthode main de l'autre exercice n'attend pas la connexion du client !
    Pourtant j'ai réutilisé le 1er code pour l'écrire, je ne comprend pas trop ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                String name = "Bob";
                Bob engine = new BobImpl();
                Registry registry = LocateRegistry.getRegistry(args[0], Integer.parseInt(args[1]));
                registry.rebind(name, engine);
     
                System.out.println("Ready to receive the secret");
    Si quelqu'un à une idée de ce qui ne va pas dans mes codes, je teste toute suggestion !
    (s'il y a besoin d'autres parties du code aussi)

    merci d'avance,

    Best regards from Innsbruck, Austria

    Kevin

  2. #2
    Membre chevronné Avatar de gronono
    Inscrit en
    Novembre 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2003
    Messages : 457
    Par défaut
    Bonjour,

    Citation Envoyé par wazari972
    et je ne sais pas comment l'enlever
    Il existe une méthode unbind dans la classe Registry permettant de supprimer un binding.


    Citation Envoyé par wazari972
    Best regards from Innsbruck, Austria
    Cordialement
    Gronono, Nouvelle-Calédonie.

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 5
    Par défaut
    ... non, malheureusement unbind ne suffit pas ...
    en fait avec cette instruction placé à la fin du corps du main client, le résultat est que je n peux pas lancer 2 fois de suite le Client, vu que mon Hello n'est plus dans le RMIregistry (normal quoi), mais ça ne libére pas mon serveur pour autant ...

    ou alors tout le monde termine ses serveurs RMI avec un ctrl-C ?? dans je 'nai rien vu de plus dans les divers exemples que j'ai vu sur le web, et dans ceux que j'ai compilé, le serveur ne se termine pas

    merci quand même

  4. #4
    Membre chevronné Avatar de gronono
    Inscrit en
    Novembre 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2003
    Messages : 457
    Par défaut
    En fait, j'utilise le RMI au tranfert de spring.
    Je ne l'ai jamais utilisé directement.

    As-tu essayé de l'executer dans un thread séparé et mettre fin au thread à la fin de ton programme ?

    De plus je n'ai jamais eu besoin d'unbinder des services. En effet les services ne doivent-ils pas être toujours accessibles ?
    En tout cas, une interrupion de services est tjrs mal vu des utilisateurs.

    A+
    Gronono

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 5
    Par défaut
    Citation Envoyé par gronono Voir le message
    As-tu essayé de l'executer dans un thread séparé et mettre fin au thread à la fin de ton programme ?
    non, pas encore, mais ça me semble un peu trop compliqué pour ce que j'ai là... ?
    est-ce qu'il existe un moyen en java de savoir combien de fois est référencé un objet, et en même temps de savoir où est ce qu'il est référencé ... ?


    Citation Envoyé par gronono Voir le message
    De plus je n'ai jamais eu besoin d'unbinder des services. En effet les services ne doivent-ils pas être toujours accessibles ?
    En tout cas, une interrupion de services est tjrs mal vu des utilisateurs.
    ben mon service qui permet de dire "Hello World" à distance je ne suis pas sur que beaucoup d'utilisateurs soit pas content que je le ferme

  6. #6
    Membre chevronné Avatar de gronono
    Inscrit en
    Novembre 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2003
    Messages : 457
    Par défaut
    Citation Envoyé par wazari972
    non, pas encore, mais ça me semble un peu trop compliqué pour ce que j'ai là... ?
    est-ce qu'il existe un moyen en java de savoir combien de fois est référencé un objet, et en même temps de savoir où est ce qu'il est référencé ... ?
    Regarde du coté de la Jconsole. Peut-être qu'y a-t-il un moyen de voire les objets référencés ?

    Citation Envoyé par wazari972
    ben mon service qui permet de dire "Hello World" à distance je ne suis pas sur que beaucoup d'utilisateurs soit pas content que je le ferme
    Je sais bien. C'était juste pour te dire que je n'avais jamais regarder de ce coté

    A+
    Gronono

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 5
    Par défaut
    en fait j'ai trouvé une solution temporaire pour mon 1er probleme,

    un flag qui passe à vrai quand le service peut se terminer,
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while (!finish) {}
    system.exit (0) ;
    ça marche comme ça !
    la version améliorer avec des wait et des notify crée des exceptions RMI, j'ai pas encore chercher à comprendre d'où ça venait

    et pour le 2eme probleme, ben ça c'est résolu tout seul, va comprendre pourquoi, ne j'ai rien changé... !

    Merci, @+ !

Discussions similaires

  1. Éclaircissement sur le référencement d'objet ?
    Par Chello dans le forum Langage
    Réponses: 9
    Dernier message: 05/07/2010, 19h42
  2. [RMI] accès a un objet du serveur a partir du client
    Par swissmade dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 23/11/2009, 09h21
  3. [RMI] problème objet distant
    Par Dnasty dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 01/03/2007, 19h08
  4. RMI et gros objet et taille memoire
    Par littleqi dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 01/02/2007, 19h12
  5. [RMI][Serialization] Recupérer un objet
    Par mavina dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 04/12/2006, 15h01

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