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 :

2 programme java distincts, 1 object commun!


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Par défaut 2 programme java distincts, 1 object commun!
    Bonjour,

    Je souhaiterai savoir comment faire pour que 2 programmes utilisant la même machine virtuelle accèdent a 1 objet commun. Un objet partagé en gros. Le principe: Le prog 1 se lance et crée la liste si elle n'existe pas, puis le programme 2 se lance et ne crée pas l'objet puisqu'il existe deja mais il peut y accéder. Si les 2 programmes sont arrêtés on libère l'objet.

    De quel côté je devrai m'orienter?
    Si vous avez une idée c'est cool!

    Merci

  2. #2
    Membre émérite

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Par défaut
    salut, je suis encore débutant mais je pense si tes deux programme sont dans le meme package tu devrai pouvoir faire hérite ta classe du programme 2 de la classe du programme 1 ca permettrai a ta classe 2 d'avoir acces a tout les objets déclarer dans ta classe 1....

    heu je suis pas sur d'avoir été clair et si ca va marcher mais c'est par la que je chercherai si j'étais toi...

    a+

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Par défaut
    Si j'ai bien compris ton problème, tu veux que quand un programme est lancé deux fois de suite il ne crée pas deux fois le même objet.

    Tu pourrais sérialiser ton objet "partagé" dans un fichier en oubliant pas de régler les problèmes de concurrence d'accès.

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    tu devrais regarder du coté de la serialisation ..

    un petit lien pour commencer

  5. #5
    Membre émérite

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Par défaut
    Citation Envoyé par verbose Voir le message
    Si j'ai bien compris ton problème, tu veux que quand un programme est lancé deux fois de suite il ne crée pas deux fois le même objet.
    Erf... J'avais pas compris ca moi

    explique toi clairement MC wacko tu as deux programmes differends ou un seul que tu lance deux fois ?

    a+

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Citation Envoyé par nayah Voir le message
    tu as deux programmes differends ou un seul que tu lance deux fois ?
    Ca revient au même problème. Ce sont deux exécutions différentes, deux processus différents. On peut soit serialiser soit s'appuyer sur un 3 ème acteur qui est un service permanent (RMI).

  7. #7
    Membre émérite

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Par défaut
    Citation Envoyé par Duc Lebowski Voir le message
    On peut soit serialiser soit s'appuyer sur un 3 ème acteur qui est un service permanent (RMI).
    On peut pas faire hériter l'un par rapport a l'autre alors ? Le deuxieme bénificierai de l'objet creer par le premier non ?

  8. #8
    Membre expérimenté
    Inscrit en
    Mai 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 335
    Par défaut
    Citation Envoyé par MC wacko Voir le message
    Je souhaiterai savoir comment faire pour que 2 programmes utilisant la même machine virtuelle accèdent a 1 objet commun.
    Bonjour, si les 2 programmes sont dans la même jvm, c'est qu'ils ont été lancés par un "launcher": Tomcat, ou autre serveur d'appli. Il faudrait préciser dans quel contexte tu es car ça peut poser problème.

    sinon, le moyen est de partager un instance unique communes aux 2 progs pour partager leurs objets:avec un singleton (classe instanciée une seule fois, dont la méthode getInstance renvoie toujours la même instance, via un attribut de classe.)

  9. #9
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    La sérialisation est certainement la méthode la plus simple, sinon il y d'autres méthodes : ipc, sockets, rmi etc.

  10. #10
    Membre émérite

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Par défaut
    ok j'ai compris ton explication duc merci je vois que j'ai encore beaucoup a apprendre

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Par défaut
    Salut

    Merci a tous pour vos réponses mais je pense pas avoir été assez précis dans mon premier post.

    Le principe c'est d'avoir une pile très basique pour gérer l'envoi et la réception de messages entre processus (de façon asynchrone). Un peu comme JMS je crois mais sans middleware.
    En théorie les programmes utilisant la pile sont différents mais en pratique pour des raisons de simplicité ils seront identiques. Pas possible donc d'utiliser de static

    Voila comment je compte procéder:
    Le premier prog lancé crée la pile, puis il peut envoyer des messages qui y seront stockés. Ensuite d'autres programmes sont lancés et peuvent faire de même. Puis tous les soirs par exemple ou toutes les heures chaque processus vérifie l'état de la pile et récupère ses messages. J'ai donc besoin d'avoir un objet "commun" à tous les processus afin qu'ils puissent y accéder.
    L'idéal serait que tout se fasse en RAM afin d'éviter les accès disques trop nombreux.
    Je ne compte pas gérer l'accès concurrent pour le moment. Un seul thread quoi parce qu'il faut commencer doucement.

    RMI est trop compliqué à mettre en oeuvre pour le moment mais je pense m'y coller histoire de tester.

    La sérialisation me paraît être la meilleure solution mais cela risque de poser des problèmes de performances. En gros dans mon cas cela voudrait dire que pour chaque message ajouté à la pile il faudrait un accès disque. Comme dit plus haut je pensai sérialiser cet objet si tous les processus sont stoppés afin de le réinitialiser au prochain lancement d'un processus.

  12. #12
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Perso, si j'étais à ta place, j'utiliserais les sockets, la sérialisation se ferait au travers de ces dernières.

Discussions similaires

  1. Communication avec un programme java
    Par Squall124 dans le forum C
    Réponses: 20
    Dernier message: 10/02/2012, 10h54
  2. [Développement] Quel environnment pour un programme java et objective c
    Par Battant dans le forum Apple
    Réponses: 1
    Dernier message: 07/04/2011, 13h26
  3. Communication Tomcat / programme java
    Par MrEddy dans le forum Tomcat et TomEE
    Réponses: 0
    Dernier message: 23/03/2010, 11h13
  4. Communication entre deux programmes Java. http ? Rmi ? WS ? Autres ?
    Par tiboudchou dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 26/03/2009, 12h50
  5. programme en java qui fait la communication via modbus
    Par maximus_yassine dans le forum Langage
    Réponses: 1
    Dernier message: 29/02/2008, 15h16

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