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

Servlets/JSP Java Discussion :

Servlet accès concurrents à un fichier


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 93
    Points : 43
    Points
    43
    Par défaut Servlet accès concurrents à un fichier
    Bonjour à tous,

    J'ai un servlet susceptible, dans un cas bien précis, de faire accès en écriture à un fichier.
    Quel conseil pouvez-vous me donner sur la meilleure manière de mettre la chose en oeuvre pour ne pas me retrouver avec des blocages causés par des accès concurents et en respectant les spécifications servlet.
    Mon serlvet container est Tomcat.

    Merci d'avance,
    Christian

  2. #2
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    Je ne sais pas si on peut connaître l'état d'un fichier à savoir si il est utilisé en écriture ou en lecture.

    peut-on écrire dans ce fichier si celui-ci est lu ?
    peut-il être lu pendant qu'on écrit dedans ?

    si on peut en connaître l'état sa simplifierait les choses mais j'ai un doute.

    sinon je vois 2 solution
    la première en base ou tu met à jours l'état du fichier ce qui te permet de ne pas écrire si celui-ci est déja utilisé mais sa t'oblige à requêter à plusieur reprise pour savoir quand celui-ci est enfin disponible ce qui est moche.

    autre solution tu crées un fichier ecriture.tmp pour signaler que tu utilises le fichier en écriture, que tu supprimes à la fin de ton opération.
    Comme ça il n'y a plus qu'a check l'existence ou non de ce fichier.

    je n'ai jamais eu à gérer ce problème et je dis peut être de grosse bétise.

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 93
    Points : 43
    Points
    43
    Par défaut
    En fait le fichier est surtout accédée en écriture, car il est simplement là pour récolter des données dans le cas d'un problème d'accès à une base de données

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 311
    Points : 9 525
    Points
    9 525
    Billets dans le blog
    1
    Par défaut
    Tes écritures sont toutes gérées par l'application ou ça pourrait être un éditeur externe (type wordpad, notepad++, etc...) ?

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 93
    Points : 43
    Points
    43
    Par défaut
    Toutes les écritures seront gérées par l'application.
    Seule la lecture sera susceptible de se faire via un programme externe

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Il suffirait de synchronisé les écritures dans le fichier.
    Bien sûr pour cela il est impératif que le traitement sur le fichier ne soit pas trop "long" afin d'éviter de bloquer trop de monde...

    a++

    PS : Apparemment c'est pour logger des infos... Pourquoi ne pas utiliser une des APIs de logs ?

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 93
    Points : 43
    Points
    43
    Par défaut
    Bonjour,

    Merci de ta réponse.
    En fait ce n'est pas vraiment du log, le but est d'enregister les données non envoyées vers la base de données en valeurs séparées par des virgules pour les réintroduire dans la base de données dès qu'elle serait disponible à nouveau.
    En logging j'utilise log4j mais je ne suis pas arrivé au résultat que je voulais, car log4j enregistre toujours l'heure, le niveau etc ... en plus de mes données.
    Mais si tu as un truc pour éviter ca, je suis interessé.

    Bonne journée,
    Christian

  8. #8
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par c-ve Voir le message
    En logging j'utilise log4j mais je ne suis pas arrivé au résultat que je voulais, car log4j enregistre toujours l'heure, le niveau etc ... en plus de mes données.
    Mais si tu as un truc pour éviter ca, je suis interessé.
    Cela se configure dans les fichiers de config de log4j... mais je touche rarement à cela...


    Si tu veut gérer cela manuellement sans avoir à trifouiller les fichiers de conf de log4j, il faudra passer par une méthode synchronisé qui se chargera de générer le fichier.

    Après tu as deux possibilités :
    • Soit tu conserves toujours le fichier ouvert et tu écris petit à petit dedans (moins d'accès IO mais perte potentielle de données)
    • Soit tu ouvres/fermes le fichier à chaque écriture


    Ensuite il faudra savoir comment tu souhaiterais récupérer les données pour les insérer dans la BD : en manuel ? en automatique ?
    Il faut bien faire attention que le fichier ne soit pas en cours d'écriture...


    a++


    PS : Tu as de tel problème de BD qu'il te faille mettre en place une telle sécurité !?

Discussions similaires

  1. Accès concurrent à un fichier
    Par Peps16 dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 29/12/2011, 13h05
  2. Accès concurrent à un fichier par JCL
    Par matholas dans le forum JCL - SORT
    Réponses: 3
    Dernier message: 06/04/2009, 15h05
  3. Problème d'accès concurrent à un fichier
    Par soso78 dans le forum VB.NET
    Réponses: 3
    Dernier message: 12/03/2009, 18h31
  4. même problème acces concurrent aux fichiers sur le serveur
    Par al3alwa dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 11/06/2007, 16h51
  5. gestion accès concurrent? possible quand on ouvre un fichier
    Par af_airone dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 21/11/2005, 10h02

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