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

Java EE Discussion :

Le fonctionnement de RMI (Remote Method Invocation) [Tutoriel]


Sujet :

Java EE

  1. #1
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut Le fonctionnement de RMI (Remote Method Invocation)
    Bonjour,

    Le RMI (ou Remote Method Invocation) est très souvent utilisé, soit directement, soit dans des couches sous-jacentes. RMI est par exemple utilisé pour exposer des EJB SessionBeans. Notre objectif va être de démystifier RMI en comprenant ses méchanismes. Nous allons analyser comment une invocation à distance est possible en allant jusqu'a implémenter notre propre version allégée de RMI. Bien entendu, afin de nous focaliser sur les objectifs de cet article, certains prérequis sont nécessaires. Aucun rappel sur l'utilisation la gestion d'un réseau en Java ne sera fait.

    Article disponible ici : http://alain-defrance.developpez.com...2SE/micro-rmi/
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut
    Bonjour Monsieur,
    Suite à la lecture du célèbre tutoriel de Alain-DeFrance sur JAVA RMI ( http://alain-defrance.developpez.com...2SE/micro-rmi/ ), j'aimerais que vous me donniez l'adresse pour récupérer le package sun.plugin.dom.exception.InvalidStateException , car j'arrive pas à l'avoir pour tester cette application.

    De plus je reçois cette erreur: << Exception in thread "main" micrormi.exception.RMIInvocationException: Connection refused: connect at micrormi.Registry.connect(Registry.java:74) >>

    Y a-t-il problème d'ouverture de ports, pourtant j'exécute en local ?

    Merci d'avance et à bientôt
    Bertrand

  3. #3
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Bonjour,

    Il ne faut pas oublier de lancer le serveur avant de lancer le client
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  4. #4
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Bravo, ça marche.
    Je n'avais pas commencé par lancer le serveur.
    Merci pour votre prompte réaction.

    A bientôt
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Problème avec RMI
    Bonjour Alain,

    J'ai copié ton code pour le tester, mais il ne fonctionne pas, il y a un problème
    avec le add.

    Le message d'erreur est :

    java.rmi.NotBoundException: Add
    at sun.rmi.registry.RegistryImpl.lookup(Unknown Source)
    at client.Client.main(Client.java:17)

    Merci de m'aider.

  6. #6
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Sans plus de détails ce ne sera pas possible de t'aider
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Je pense que j'ai un problème avec l'annuaire.
    il me semble qu'on doit lancer le rmiregistry, le serveur et puis le client ?
    Mais j'ignore comment lancer le rmiregistry

    Merci.

  8. #8
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Donne nous au moins la stack
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Question sur la methode args2Class ()
    Bonjour, j'ai suivi votre tutoriel Java qui est très complet est très bien expliqué, mais j'ai un petit souci.

    Si j’appelle depuis le client une méthode qui n'a pas d argument la boucle for() de la méthode args2Class() me lève une exception.
    Je perd donc la main sur le client. Et coté serveur la méthode n'est jamais invoqué.

    Merci d'avance.
    Cordialement Ivan Beauté

  10. #10
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Salut,

    Le code n'est pas complet ni complètement sécure, le but de ce tutoriel est de montrer un concept, libre à toi de l'adapter/compléter

    PS : je pense que utiliser RMI en prod est mieux que de finir le programme dans son intégralité, le but est seulement de comprendre le fonctionnement de RMI rien de plus.
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Justement je galère à l'adapter ... . J'ai bien essayé de faire un test avant d’appeler args2Class(), mais ça me reporte l'erreur ici :

    oos.writeObject(result);

    J'arrive pas à m'en sortir, même si j'appelle ma méthode avec un argument bidon, j'ai cette erreur : java.lang.reflect.UndeclaredThrowableException
    PS : je pense que utiliser RMI en prod est mieux que de finir le programme dans son intégralité, le but est seulement de comprendre le fonctionnement de RMI rien de plus.
    Je ne comprend pas? Ce n'est pas RMI que l'on utilise via ton tuto?

  12. #12
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Citation Envoyé par Xanguiz Voir le message
    Je ne comprend pas? Ce n'est pas RMI que l'on utilise via ton tuto?
    Absolument pas.

    Comme je le dis dans le tuto, le but est de coder notre "propre" RMI, afin de comprendre comment ça marche
    Ce n'est pas du RMI à proprement parler.

    Est-ce que tu pourrais me dire ce qui t'as induit en erreur que je rectifie ça ?

    Alain.
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  13. #13
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Alain Defrance Voir le message
    Est-ce que tu pourrais me dire ce qui t'as induit en erreur que je rectifie ça ?
    Je suppose que c'est ton chapitre II-C.

    Tu devrais peut-être appeler ton chapitre III : "Notre implémentation imitant RMI"
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    La partie II explique comment fonctionne RMI donc c'est normal qu'on parle de RMI.
    La partie III s'intitule "Notre implémentation", je pense que c'est suffisamment clair n'est-ce pas ?
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  15. #15
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Son problème semble démontrer le contraire

    Je pense que c'est une confusion liée au terme "implémentation" (un peu comme Interface et Implémentation), mais je peux me tromper...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #16
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Je confirme en effet ^^, le terme implantation, m'aurais peut être mis la puce à l'oreille, mais "implémentation" ... J'étais persuadé qu'on allais mettre en place le RMI de java xD.

    J'ai maintenant perçut la nuance ^^. Mais j'avoue qu'en tombant directement sur ce tuto, sans avoir lu d'article sur le RMI, j'ai été un peu dérouté.

    Vila Encore merci pour le tuto en tout cas

  17. #17
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Son problème semble démontrer le contraire

    Je pense que c'est une confusion liée au terme "implémentation" (un peu comme Interface et Implémentation), mais je peux me tromper...
    Oui en effet

    Je vais tenter de corriger ça pour que ce soit plus clair
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  18. #18
    Membre averti
    Avatar de witch
    Inscrit en
    Mai 2007
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2007
    Messages : 346
    Points : 335
    Points
    335
    Par défaut
    Bonjour,

    Merci d'abord pour cet article qui m'aide beaucoup.

    J'aimerai quand même faire un truc encore plus personnalisé, en lisant la conclusion, je me suis dis que c'est peut être ça qu'il me faut.

    Il serait intéressant de rendre abstraite la classe Registry, et de créer plusieurs implémentations comme SocketRegistry, FileRegistry ou HttpRegistry.
    Sauf que pour quelqu'un qui débute, c'est pas assez clair...
    puis-je avoir quelques exemples pour ces implémentation ? SocketRegistry par exemple ou FileRegistry? pour quels genre de services je pourrai utiliser ces implémentations?


    Merci.
    If a pretty poster and a cute saying are all it takes to motivate you, you probably have a very easy job. The kind robots will be doing soon.

Discussions similaires

  1. RMI (Remote Method Invocation) Connection timed out
    Par xasha dans le forum Langage
    Réponses: 8
    Dernier message: 03/12/2009, 13h00
  2. Réponses: 2
    Dernier message: 16/11/2006, 11h55
  3. Réponses: 8
    Dernier message: 01/02/2006, 17h28
  4. [FLASH 8] [Remoting] [Java] invocation unique
    Par abenhass dans le forum Flash
    Réponses: 4
    Dernier message: 28/12/2005, 08h53

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