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

Hibernate Java Discussion :

Hibernate et API Concurrent : bloquages


Sujet :

Hibernate Java

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Hibernate et API Concurrent : bloquages
    Bonjour

    J'ai un souci avec Hibernate et l'API concurrent. Possédant plusieurs bdd, j'utilise plusieurs objets HibernateDaoSupport, et je tente de faire des requêtes en parallèle sur chaque bdd en utilisant l'API java.util.concurrent.

    Voici le code qui me pose un problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
            ExecutorService executor = Executors.newCachedThreadPool();
            ArrayList<FutureTask<Long>> allTasks = new ArrayList<FutureTask<Long>>();
            for (final HibernateDaoSupport dao : allDao) {
                FutureTask<Long> task = new FutureTask<Long>(new Callable<Long>() {
                    public Long call() {
                        return dao.countNodes(baseNode, query);
                    }
                 });
                allTasks.add(task);
                executor.execute(task);
            }
            try {
                long count = 0;
                for ( FutureTask<Long> task : allTasks ) {
                    count += task.get();
                }
                return count;
            } catch (InterruptedException e) {
                throw new RuntimeException("Error while processing a sharded request", e);
            } catch (ExecutionException e) {
                throw new RuntimeException("Error while processing a sharded request", e);
            }
    La méthode countNodes() appelée dans la tâche retourne, pour chacune des bdd, un nombre (Long)hqlQuery.uniqueResult() qui correspond au nombre d'entrées stockées qui vérifient un certain critère.

    Mon problème est que, si je fais plusieurs appels successifs à cette méthode (8 pour être précise), mon programme se bloque et ne me rend jamais la main.

    Est-ce que quelqu'un sait de quoi ça peut venir ? A priori, les threads n'ont aucun lien entre eux, et je ne vois pas pourquoi il y aurait un interblocage. Est-ce que ça peut venir de la connexion aux bases de données (genre trop de connexions successives ou en parallèle) ? Comment puis-je le vérifier et y remédier ?

    Merci d'avance pour votre aide

  2. #2
    Candidat au Club
    Inscrit en
    Juillet 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Euh, j'ai oublié de préciser que l'appli bloque au niveau de l'instruction Merci

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Désolée de vous donner les infos au compte-gouttes, mais je viens de m'apercevoir que la méthode d'accès à la bdd (countNodes) semble bien se terminer. Je ne vois donc vraiment pas pourquoi la méthode get bloque, puisqu'un résultat a bien été produit (et donc que le thread a dû être libéré)...

    Encore merci

Discussions similaires

  1. Hibernate et API Criteria
    Par kariel dans le forum Hibernate
    Réponses: 0
    Dernier message: 28/05/2014, 13h41
  2. [WIN 32 API] Désactiver l'hibernation
    Par Crayon dans le forum Windows
    Réponses: 2
    Dernier message: 13/10/2006, 17h06
  3. [Hibernate] Requete basé sur l'API Criteria
    Par K-Kaï dans le forum Hibernate
    Réponses: 16
    Dernier message: 16/06/2006, 16h09
  4. [Hibernate] Gestion d'acces concurrents
    Par K-Kaï dans le forum Hibernate
    Réponses: 9
    Dernier message: 01/06/2006, 16h08
  5. L'api net.sf.hibernate
    Par kaikai dans le forum Hibernate
    Réponses: 2
    Dernier message: 12/05/2006, 08h46

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