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 Discussion :

Partage d'une collection entre différents clients


Sujet :

Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 27
    Points : 27
    Points
    27
    Par défaut Partage d'une collection entre différents clients
    Bonjour à tous!

    Je souhaite développer aujourd'hui un mini-chat en JAVA. Il me faut donc start un serveur puis plusieurs clients différents connectés sur celui-ci.

    Lorsqu'un client tape un message, il est ajouté à une liste statique, puis ces messages sont récupérés sur la console des autres clients quand ils tapent à leur tour un message. Cela est simple et m'a été conseillé par mon professeur afin que je puisse étudier pas à pas les RMI.

    Mon problème : lorsque je lance le main d'un client, les messages sont bien enregistrés dans la liste statique. Cependant, lorsque je souhaite lancer un autre main Client, la liste que j'avais remplis précédemment est vide. Je stock pourtant cette liste en static dans une classe à part. Ce qu'il se passe, c'est qu'elle se réinitialise à chaque lancement de main. Comment éviter cela?

    Merci beaucoup

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Il n'y a pas de persistance des variables en mémoire, entre chaque session, où plusieurs sessions d'exécution de programme Java. Chaque client a son propre espace mémoire, qui s'initialise au démarrage. Ta liste remplie dans une session d'un client ne peut donc être visible dans un autre client.

    La liste des clients devraient être gérée par le serveur : lorsqu'un client se connecte au serveur (mettons que ça se fasse lors de l'envoi du premier message si tu veux), le serveur l'ajoute à la liste de tous les clients, qui est partagée entre tous les clients (le but de RMI, justement c'est d'avoir des objets partagés entre tous les clients à partir d'une source unique, le serveur).

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    D'accord, merci beaucoup.

    Si j'ai bien compris, il faut donc que ma liste de messages soit initialisé dans le serveur afin de pouvoir ensuite la partager à tous les clients?

    EDIT :
    C'est bizarre, malgré que je mette ma liste dans ma classe serveur, elle se réinitialise à chaque fois.

    J'ai l'impression que lorsque je relance un client différent il recharge toutes mes classes en ainsi, réinitialise ma collection

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Oui, enfin, il faut qu'elle soit partagée via RMI quand même. Regarde l'exemple de la classe Information ici. Pour résoudre ton problème, tu fais ta ListeMessages (ou ListeClients, ou ce que tu as a partager) exactement sur le principe de la classe Information.

Discussions similaires

  1. partage d'une variable entre plusieurs threads
    Par baedal dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 27/02/2008, 21h33
  2. Réponses: 5
    Dernier message: 25/04/2006, 15h13
  3. Réponses: 14
    Dernier message: 02/05/2005, 19h14
  4. Partage d'une variable entre les processus fils
    Par Mehdi Feki dans le forum Linux
    Réponses: 7
    Dernier message: 09/01/2005, 14h34
  5. Partage d'une constante entre 2 fichiers en C
    Par elsargento dans le forum C
    Réponses: 6
    Dernier message: 29/09/2003, 23h17

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