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

Collection et Stream Java Discussion :

[HashTable] Création d'un système de cache : Perte de données


Sujet :

Collection et Stream Java

  1. #1
    Membre régulier Avatar de Resyek
    Inscrit en
    Juillet 2004
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 97
    Points : 104
    Points
    104
    Par défaut [HashTable] Création d'un système de cache : Perte de données
    Bonsoir à tous,

    Je travaille en ce moment sur un système de "cache" de fichier .properties. Dans un répertoire, j'ai plusieurs fichiers de même type (exemple Tables de message d'erreurs), dont le nombre est variable : l'utilisateur peut rajouter de nouveau fichiers "messages d'erreurs" sans qu'on ait à redévelopper l'ensemble.
    J'ai aussi besoin que ce soit rapide, thread safe (accès concurrents en perspective).

    J'ai d'abord créé, dans ma classe "Configuration" (cache) une double Map, de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        /**
         * mapTablesExternalisees : Hashtable contenant un doublet de type :
         * - String identifiant le nom de la table,
         * - Map du fichier, contenant elle même :
         *      > le libellé de la donnée
         *      > la valeur de la donnée.
         */
        private static Map < String, Map > mapTablesExternalisees =
            new Hashtable < String, Map > ();
    Malheureusement, à la lecture des informations dans une autre classe, je me suis aperçu que des données manquaient !
    Ce que je trouve étrange, c'est qu'il me ramène bien la Hashtable concernée, mais certaines des entrées sont absentes.
    Pourtant, j'ai vérifié qu'aucune clé ne porte le même nom.

    J'ai utilisé des ConcurrentHashMap, mais c'est pareil, il me manque toujours des données, dans le cas d'une double Map.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        private static ConcurrentMap< String, ConcurrentHashMap<String, String> > mapTablesExternalisees =
            new ConcurrentHashMap< String, ConcurrentHashMap<String, String> > ();
    Avez vous une idée de l'origine de cette "perte de données" ?

    Merci !

  2. #2
    Membre confirmé Avatar de broumbroum
    Profil pro
    Inscrit en
    Août 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 406
    Points : 465
    Points
    465
    Par défaut ObjectCacheManager
    J'ai proposé ici un cache rapide pour java dans les sources libres de developpez.com: ObjectCacheManager.java

  3. #3
    Membre régulier Avatar de Resyek
    Inscrit en
    Juillet 2004
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 97
    Points : 104
    Points
    104
    Par défaut
    Je regarde ça en ce moment !
    Juste une remarque en passant, le commentaire du deuxième constructeur est erroné.

  4. #4
    Membre éclairé

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 346
    Points : 737
    Points
    737
    Par défaut
    Une toute pertite question, est-tu sure de la manière dont tu remplie tes Map car pour moi ça devrait fonctionner.

    Si tu dit qu'il te renvoit bien ta map mais que des entrée sont manquante dedans, je ne pense pas que celà soit réellement de la faute de ton cache

  5. #5
    Membre régulier Avatar de Resyek
    Inscrit en
    Juillet 2004
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 97
    Points : 104
    Points
    104
    Par défaut
    J'ai pu résoudre le problème, d'une manière plus simple qu'utiliser des classes spéciales, nouveaux développements outranciers, Hibernate etc...

    J'ai ajouté un singleton dans ma classe "Configuration", qui gère la persistance de toutes mes données. (A l'origine, j'utilisais une classe abstraite dans laquelle j'affectais des attributs "Map" qui étaient static).

    Merci pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/10/2006, 23h56
  2. Création des tables système
    Par tarik75 dans le forum Oracle
    Réponses: 7
    Dernier message: 17/08/2006, 18h02
  3. [COMPOSANT] Système de cache pour asp ?
    Par tom_92 dans le forum ASP
    Réponses: 1
    Dernier message: 12/04/2006, 12h05
  4. [Smarty] système de cache
    Par mohican13 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 23/02/2006, 10h05
  5. [PEAR] Système de cache jpcache: questions
    Par Cyrius dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 23/12/2005, 15h38

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