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 :

[File] Accès concurrent à un fichier avec un programme Perl


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 20
    Points : 13
    Points
    13
    Par défaut [File] Accès concurrent à un fichier avec un programme Perl
    Bonjour,

    Je développe une application web sous Linux qui prend en entrée un fichier XML mis à jour par un programme Perl. Ce fichier est parsé par l'application web pour le transformer en utilisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //construction du parseur pour créer des documents DOM
    DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();
    DocumentBuilder parseur = fabrique.newDocumentBuilder();
     
    //parsing du fichier XML
    File xml = new File("fichier.xml");
    Document doc = parseur.parse(xml);
    J'ai donc un problème d'accès concurrent sur ce fichier avec l'application Perl qui le met à jour. A priori, je pense que seule la méthode parse de DocumentBuilder pose un problème (c'est elle qui lit le fichier). Comment éviter le problème d'accès concurrent? Je songe à utiliser un sémaphore POSIX en passant par la JNI mais ça me semble compliqué... Si vous avez une idée plus simple je suis intéressé!

    Merci

  2. #2
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 413
    Points : 1 993
    Points
    1 993
    Par défaut
    Je n'ai pas de solution toute cuite mais je peux te montrer des voies possibles:

    - Utilisation d'un fichier lock.
    - Utilisation de pipe

    Ces deux possibilités exigent que tu puisses modifier le comportement de le programme Perl.

    As-tu la possibilité de modifier le programme Perl?
    Bien le bonjour chez vous
    Jowo

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Merci de ta réponse rapide!

    Oui j'ai la possibilité de modifier le programme Perl (ou plutôt de le faire modifier).

    Un fichier lock ne va pas poser de problème de blocage si le programme termine anormalement? Quant au pipe, ça ne me semble pas la bonne voie, en tout cas de ce que j'en comprends : l'appli web parse le fichier régulièrement mais en entier (il faut qu'il soit écrit complètement sur le disque) et pas au fur et à mesure en lisant dans un pipe. Mais peut-être que je ne saisis pas bien l'architecture que tu proposes. Sinon, que penses-tu du sémaphore?

    Merci de ton aide!

  4. #4
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 413
    Points : 1 993
    Points
    1 993
    Par défaut
    Pipe n'est pas une bonne solution dans ton cas.

    Le sémaphore est une solution.

    Mais ton programme va bloquer le temp que le programme Perl finit sa mise à jour.
    Bien le bonjour chez vous
    Jowo

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Oui j'en suis conscient mais cela vaut mieux qu'une erreur I/O à cause d'un accès concurrent non? Je suis en train d'implémenter ça mais c'est pas évident, je reposte quand ça marche.

    Merci pour ton aide!

Discussions similaires

  1. Réponses: 0
    Dernier message: 17/05/2008, 09h06
  2. Ouverture d'un fichier avec le programme par défaut
    Par blastafarie dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/11/2007, 17h19
  3. Réponses: 1
    Dernier message: 23/07/2007, 11h00
  4. Ouvrir un fichier avec son programme
    Par aliwassem dans le forum Delphi
    Réponses: 1
    Dernier message: 21/10/2006, 21h26
  5. [VBA-E]demarrer un fichier avec tel programme ?
    Par zouille dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 20/03/2006, 12h19

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