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 :

Problème de concurrence avec des fichiers


Sujet :

Java

  1. #1
    Expert éminent sénior

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Points : 13 312
    Points
    13 312
    Par défaut Problème de concurrence avec des fichiers


    Je vais essayé d'être le plus clair possible. Je développe une application en Java hébergé sur un serveur qui est appelé par un plugin installé dans un navigareur web. Sachant que le plugin peut être installé sur beaucoup plus d'un navigateur un problème de concurrence ce pose au niveau de l'application.

    Cette application utilise des fichiers à chaque lancement d'une instance de l'application mais ces fichiers ne seront jamais modifiés donc toujours en lecture.
    Malgré ça je voudrai que quand le fichier est déjà lu par une instance que les autres attendent que l'instance qui utilise le fichier se termine et ainsi de suite.

    Une idée de comment je pourrai faire ça en Java ?

    Vous pouvez aller voir mes tutos et mes critiques: ici
    Ainsi que mon: blog

    Je ne répondrai à aucune question technique par MP les forums sont présents pour ça

    c'est très intelligent un ordinateur: "Keyboard ERROR. No keyboard Connected. Press any key to continue..."

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    J'avoue que je comprends mal le contexte
    Pourquoi bloquer les flux en lecture sur les fichiers alors qu'ils ne sont pas susceptibles d'être modifiés ?
    Si je pars de ton message, cela voudrais dire qu'il y a quelque part un bloc synchronisé pour la lecture des fichiers et un cache pour diminuer les problèmes de concurrence.

  3. #3
    Expert éminent sénior

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Points : 13 312
    Points
    13 312
    Par défaut
    Pour le moment il n'y a absolument rien pour prévoir de la concurrence, c'est justement pour ça que je pose la question savoir si il y aura des problèmes et si oui comment les paliers. Et à l'avenir il y aura des fichiers modifiés mais pas pour le moment, donc autant prévoir la chose
    Vous pouvez aller voir mes tutos et mes critiques: ici
    Ainsi que mon: blog

    Je ne répondrai à aucune question technique par MP les forums sont présents pour ça

    c'est très intelligent un ordinateur: "Keyboard ERROR. No keyboard Connected. Press any key to continue..."

  4. #4
    Membre du Club Avatar de NRLinker
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2012
    Messages : 44
    Points : 55
    Points
    55
    Par défaut
    je t'avoue j'ai pas vraiment compris aussi , vu que les fichiers sont on read only . Donc t'as pas besoin de les mettre thread safty pour éviter les problème de la concurrence puisque ya pas de concurrence vu que les données changent pas .Mais si tu veux vraiment le faire , bah mets la méthode qui li les fichiers en synchonized ou équivalent , comme ça y'aura qu'un accès à la fois .

  5. #5
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Sans hésiter, je passerais par une base de données plutot que par un fichier. C'est fait pour gerer les problemes de concurrence et ca marche. Si tu aimes réinventer la roue, tu peux faire un service qui synchronisera les acces au fichier. Quelque soit le systeme que tu choisiras en utilisant seulement le filesystem, il y aura toujours des risques d'acces parallele.

  6. #6
    Expert éminent sénior

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Points : 13 312
    Points
    13 312
    Par défaut
    Citation Envoyé par NRLinker Voir le message
    je t'avoue j'ai pas vraiment compris aussi , vu que les fichiers sont on read only . Donc t'as pas besoin de les mettre thread safty pour éviter les problème de la concurrence puisque ya pas de concurrence vu que les données changent pas.
    Exact pour le moment les fichiers sont en lecture seul mais ils vont bientôt devenir aussi modifiable.

    Citation Envoyé par NRLinker Voir le message
    Mais si tu veux vraiment le faire , bah mets la méthode qui li les fichiers en synchonized ou équivalent , comme ça y'aura qu'un accès à la fois .
    Ok, donc si je met cette méthode en synchronized, toutes les instances accéderont au fichier chacun leur tour et seront mis en attente en attendant que l'instance qui utilise le fichier termine d'utiliser le fichier. C'est bien ça ?

    Citation Envoyé par hwoarang Voir le message
    Sans hésiter, je passerais par une base de données plutot que par un fichier. C'est fait pour gerer les problemes de concurrence et ca marche. Si tu aimes réinventer la roue, tu peux faire un service qui synchronisera les acces au fichier. Quelque soit le systeme que tu choisiras en utilisant seulement le filesystem, il y aura toujours des risques d'acces parallele.
    Oui utiliser une base de donnée est une bonne idée mais ce n'est pas des fichiers de données mais des fichiers de configuration d'un framework, je n'ai donc pas trop le choix
    Vous pouvez aller voir mes tutos et mes critiques: ici
    Ainsi que mon: blog

    Je ne répondrai à aucune question technique par MP les forums sont présents pour ça

    c'est très intelligent un ordinateur: "Keyboard ERROR. No keyboard Connected. Press any key to continue..."

  7. #7
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Citation Envoyé par snake264 Voir le message
    Ok, donc si je met cette méthode en synchronized, toutes les instances accéderont au fichier chacun leur tour et seront mis en attente en attendant que l'instance qui utilise le fichier termine d'utiliser le fichier. C'est bien ça ?
    Un bloc synchronized permet simplement de s'assurer que le bloc qu'il entoure n'est executé que pas 1 thread à la fois. Ca permettra de proteger ton fichier de config si et seulement si tous tes plugins se connectent sur l'application serveur pour lire le fichier de config et que celle-ci n'est lancée qu'une seule fois (en gros, cela revient à la solution de passer par un service que je proposais). Mais s'ils accedent au fichier par le filesystem, ca ne marche pas.

    Citation Envoyé par snake264 Voir le message
    Oui utiliser une base de donnée est une bonne idée mais ce n'est pas des fichiers de données mais des fichiers de configuration d'un framework, je n'ai donc pas trop le choix
    Ca parait etrange d'avoir à modifier à la volée un fichier de configuration de framework. En général, si le programme est amené à modifier des données de celui-ci, c'est que les données en question ne devraient pas y etre, mais plutot dans une base de données externe.

  8. #8
    Expert éminent sénior

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Points : 13 312
    Points
    13 312
    Par défaut
    Citation Envoyé par hwoarang Voir le message
    Un bloc synchronized permet simplement de s'assurer que le bloc qu'il entoure n'est executé que pas 1 thread à la fois. Ca permettra de proteger ton fichier de config si et seulement si tous tes plugins se connectent sur l'application serveur pour lire le fichier de config et que celle-ci n'est lancée qu'une seule fois (en gros, cela revient à la solution de passer par un service que je proposais). Mais s'ils accedent au fichier par le filesystem, ca ne marche pas.
    Ok donc ça ne fonctionnera pas pour mon cas.

    Citation Envoyé par hwoarang Voir le message
    Ca parait etrange d'avoir à modifier à la volée un fichier de configuration de framework. En général, si le programme est amené à modifier des données de celui-ci, c'est que les données en question ne devraient pas y etre, mais plutot dans une base de données externe.
    Dans mon cas, le framework que j'utilise change de configuration en fonction des demandes du plugin-in donc je passe par un service oui pour tout ce qui est données etc. mais le framework que j'utilise lui, ne peut pas se configurer avec une bdd.

    La seule idée que j'aurai serait de configurer le framework directement dans le code sans passer par le fichier, mais ça rajoute beaucoup de code inutile et c'est un peu embêtant...
    Vous pouvez aller voir mes tutos et mes critiques: ici
    Ainsi que mon: blog

    Je ne répondrai à aucune question technique par MP les forums sont présents pour ça

    c'est très intelligent un ordinateur: "Keyboard ERROR. No keyboard Connected. Press any key to continue..."

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    A moins que tu ne puisses étendre/surcharger le gestionnaire de configuration de ton framework cela semble mal parti.
    Par curiosité c'est un framework maison ?

  10. #10
    Expert éminent sénior

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Points : 13 312
    Points
    13 312
    Par défaut
    Non c'est celui-là : http://gate.ac.uk/

    Et ce framework peut entièrement être configurable via le code en fixant les valeurs soit même mais c'est très long et chiant car il y a énormément de paramètres de configurations. D'ou le fait de passer par des fichiers.
    Vous pouvez aller voir mes tutos et mes critiques: ici
    Ainsi que mon: blog

    Je ne répondrai à aucune question technique par MP les forums sont présents pour ça

    c'est très intelligent un ordinateur: "Keyboard ERROR. No keyboard Connected. Press any key to continue..."

  11. #11
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Par curiosité, tu peux donner des exemples de données du fichier de config susceptibles de changer ?

  12. #12
    Expert éminent sénior

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Points : 13 312
    Points
    13 312
    Par défaut
    Une petite partie des possibilités de configuration de ce framework qui se configure avec plusieurs fichiers : http://gate.ac.uk/sale/tao/splitch2.html#x5-260002.4
    Vous pouvez aller voir mes tutos et mes critiques: ici
    Ainsi que mon: blog

    Je ne répondrai à aucune question technique par MP les forums sont présents pour ça

    c'est très intelligent un ordinateur: "Keyboard ERROR. No keyboard Connected. Press any key to continue..."

Discussions similaires

  1. problème de compatibilité avec des fichiers blend
    Par ShinobiX1 dans le forum Unity
    Réponses: 4
    Dernier message: 26/09/2013, 09h45
  2. Problème avec des fichiers frm
    Par lelectronique.com dans le forum MySQL
    Réponses: 7
    Dernier message: 15/01/2009, 14h16
  3. Problème avec des fichiers audios
    Par ksper92 dans le forum Flash
    Réponses: 1
    Dernier message: 24/01/2007, 18h38
  4. [vb.net]Problème avec des fichiers DLL
    Par nakata77 dans le forum VB.NET
    Réponses: 1
    Dernier message: 20/09/2006, 18h40
  5. Problème avec des fichiers
    Par Stany dans le forum C++
    Réponses: 7
    Dernier message: 17/10/2005, 16h53

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