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 :

Programme utilisant RMI ( serveur/client )


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2008
    Messages
    174
    Détails du profil
    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2008
    Messages : 174
    Par défaut Programme utilisant RMI ( serveur/client )
    Bonjour,

    Je développe en ce moment une application java qui nécessite un "serveur" et un "client" utilisant les propriétés de la RMI.

    Je n'arrive pas à rendre le client "indépendant" du serveur. Je m'explique.
    Je veut que le serveur créé des objets et les mette "accessible" avec mon hostname. Jusque la tout va bien ( utilisation des inet adresses etc ).

    Mon problème commence lorsque je m'intéresse au coté client.
    Je veut que mon client récupère ( à l'aide d'un lookup() ) les objets accessibles. Mais comment le client peut il savoir le nom des objets puisque le Hostname du serveur en fait partie et que le client ne connait pas le hostname du serveur?

    Il y a-t-il moyen d'éviter le hostname du serveur lors de la mise en réseau avec le rebind()?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Malheureusement, rien n'est magique. Le client doit savoir avec qui il doit dialoguer, et ensuite il doit savoir ce qu'il faut qu'il récupère. Il est toujours possible d'ajouter des couches d'abstractions supplémentaires : lire la conf serveur sur une base de données pour la connexion, appeler un objet générique propre à un client qui contient toute la conf pour récupérer les objets de manière dynamique... Mais au final tu auras toujours du code en dur à un moment donné
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre éprouvé
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2008
    Messages
    174
    Détails du profil
    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2008
    Messages : 174
    Par défaut
    Alors comment puis-je définir un nom standard a mes objets distant?
    -> Dans mon rebind() je doit lui dire ou se trouve l'objet. Ma ligne est :

    context.rebind("rmi://ELVERION/plateau", plateau);
    => ELVERION est mon Hostname, plateau est mon objet.

    Le problème, est que si je met, à la place d'ELVERION, un autre nom, le programme serveur me donne une belle erreur ( java.rmi.UnknownHostException )

    Comment puis-je "écraser" ou définir mon hostname? ( J'ai regardé dans la classe System mais je n'ai rien vu d'intéressant.....

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Le hostname est défini dans le fichier hosts. Celui-ci se trouve à cet endroit C:\windows\system32\hosts (ou un autre chemin, si tu as installé windows dans un autre répertoire) ou à celui-ci /etc/hosts selon ton système.

    ATTENTION : NE MODIFIE RIEN ! Fais seulement des ajouts dans ce fichier. Tu risques sinon de faire quelques bêtises

  5. #5
    Membre éprouvé
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2008
    Messages
    174
    Détails du profil
    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2008
    Messages : 174
    Par défaut
    Peut tu expliquer un petit peu?

    Je ne connait absolument pas la structure des fichiers dont tu parle.
    De plus, je travaille sous windows ( pour l'instant ) mais mon programme doit aussi tourner sous un serveur Linux!

    De plus, est ce que l'utilisateur va vraiment apprécier que je modifie ça?
    Ne risque-t-il par d'y avoir des bugs à cause des protections? ( par exemple, un OS qui refuserait qu'un programme sans autorisation spécifique modifie un fichier comme celui-ci)?

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Mouais, j'aurais mieux fait de me taire...

    Mais bon, on continue : le fichier hosts définit tous les noms d'hôte auxquels ton ordi peut répondre comme ça, si on l'appelle lui avec son IP. Il est recommandé de ne pas trop toucher à ce fichier, sauf si l'on sait ce que l'on fait.

    un fichier hosts est typiquement de la forme
    127.0.0.1 LOCALHOST
    127.0.0.1 ELVERION,DOMAINE2,DOMAINE3
    192.168.3.65 ELVERION_HOST
    192.168.3.1 MON_ROUTEUR

    Il permet d'associer à un nom une adresse IP. C'est comme un serveur DNS, mais en moins flexible, en moins utilisable. Traduit grossièrement, ce fichier signifie que ton ordinateur peut être appelé depuis plusieurs noms : localhost, elverion, domaine2, domaine3. Si tu appelles ELVERION_HOST depuis ton ordinateur, il cherchera sur le réseau l'ordinateur avec l'adresse 192.168.3.65, que celle-ci soit ton adresse ou celle d'un autre ordi.

    Mais comme je l'ai dit, j'aurais mieux fait de me taire, car j'ai mal compris ton besoin.

    Dans ton cas, tu ferais mieux d'utiliser un serveur DNS qui permet d'avoir un équivalent à ce fichier, mais pour un réseau complet, plutôt que pour un seul ordinateur. Dans tous les cas, ne _modifie_ pas ce fichier sur l'ordi du client. Sur le tien pour les tests, les développements, pourquoi pas, mais PAS si l'appli doit être déployée.

    Idéalement, tu donnes un nom de machine sur lequel se trouve la partie serveur de ton application. Pour les tests, il s'avère que c'est ta machine, mais pour la production, ce sera peut-être monserveur.masociete.ext (le DNS, bien configuré, renverra la bonne adresse IP vers le bon serveur) . Et comme ça, tu pourras te connecter au serveur RMI sans problème.

    Renseigne-toi donc sur les serveurs DNS. Souvent, ils existent dans les routeurs (pas dans le bas de gamme, toutefois).

Discussions similaires

  1. [RMI] exécution un programme utilisant RMI
    Par haha100 dans le forum Débuter avec Java
    Réponses: 0
    Dernier message: 28/11/2010, 23h19
  2. RMI: Client-Serveur Serveur-Client
    Par LinuxUser dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 13/04/2008, 18h28
  3. Assembly utilisable coté serveur et client
    Par anthyme dans le forum Silverlight
    Réponses: 12
    Dernier message: 29/03/2008, 20h08
  4. RMI (sens serveur client)
    Par kanzarih dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 06/10/2007, 12h42
  5. Programmation d'une application Client/Serveur
    Par altivex11 dans le forum C#
    Réponses: 9
    Dernier message: 30/08/2007, 09h33

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