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

JDBC Java Discussion :

Mettre en cache JDBC


Sujet :

JDBC Java

  1. #21
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 139
    Par défaut
    Bon j'ai réussi dans un premier temps à mettre en cache la méthode selestPart !! Youhou !!!!!!!!!!

    J'ai reprofilé avec Yourkit et j'ai fait les mêmes tests

    Résultats :
    Avant : la requete SELECT_QUERY était appelé + de 10000 fois
    Maintenant : elle est appelée 180 fois

    Bon c'est déjà ça de pris.. Maintenant me reste à cacher l'autre et ça va être chocolat..

  2. #22
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    en plus autres effets :
    1 - ça va économiser de la mémoire
    2 - ça va éviter au Garbage Collector d'avoir à nettoyer ce que le programme consommait puis jetait.

  3. #23
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 139
    Par défaut
    Par contre je constate que le cache se rajoute quelque fois plusieurs fois le même couple clé/valeur alors que je fais bien le test pour voir si le couple existe pas déjà...

  4. #24
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 139
    Par défaut
    J'aimerais mettre en cache maintenant des objets tâches... Le problème c'est avec quelle clé ?
    Sachant qu'une tâche est surtout recherchée en fonction de sa date.. Le problème c'est qu'il y a plusieurs tâches pour une date...

  5. #25
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 139
    Par défaut
    Bon j'ai à première vue réussi à mettre en cache la deuxième requête et ça marche.

    Par contre, le log de GlassFish me sort cette exception souvent :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    GRAVE: The log message is null.
    java.lang.NullPointerException
            at beans.EDTBean.constrId(EDTBean.java:515)
            at beans.EDTBean.constrId(EDTBean.java:528)
            at beans.EDTBean.getTachesProject(EDTBean.java:814)
            at beans.EDTBean.getTaches(EDTBean.java:566)
            at beans.EDTBean.rechercher(EDTBean.java:991)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1056)
            at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1128)
            at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5292)
            at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:615)
            at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:797)
            at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:567)
            at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:157)
            at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:139)
            at sun.reflect.GeneratedMethodAccessor65.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:858)
            at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:797)
            at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:367)
            at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5264)
            at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5252)
            at com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:201)
            at com.sun.ejb.containers.EJBObjectInvocationHandlerDelegate.invoke(EJBObjectInvocationHandlerDelegate.java:75)
            at $Proxy167.rechercher(Unknown Source)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:228)
            at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:147)
            at com.sun.corba.ee.impl.presentation.rmi.codegen.CodegenStubBase.invoke(CodegenStubBase.java:225)
            at interfaces.__EDTBeanRemote_Remote_DynamicStub.rechercher(interfaces/__EDTBeanRemote_Remote_DynamicStub.java)
            at interfaces._EDTBeanRemote_Wrapper.rechercher(interfaces/_EDTBeanRemote_Wrapper.java)
            at webGdP.servlet.ajax.EDTRecapServlet.recap(EDTRecapServlet.java:151)
            at webGdP.servlet.ajax.EDTRecapServlet.processRequest(EDTRecapServlet.java:292)
            at webGdP.servlet.ajax.EDTRecapServlet.doPost(EDTRecapServlet.java:322)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
            at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
            at webGdP.servlet.filtre.AccessFilter.doFilter(AccessFilter.java:57)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
            at webGdP.servlet.filtre.LoginFilter.doFilter(LoginFilter.java:59)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:277)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
            at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
            at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
            at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
            at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
            at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
            at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
            at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
            at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
            at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
            at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
            at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
            at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
            at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
            at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
            at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
            at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
            at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
            at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
            at java.lang.Thread.run(Thread.java:619)
    Ca semble pas affecter le fonctionnement de l'appli mais j'aimerais bien la faire disparaitre.. Une solution ? merci !

  6. #26
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    Il suffit de regarder cette ligne pour comprendre ce qui est "null" :

    beans.EDTBean.constrId(EDTBean.java:515)

    Montre ta classe EDTBean et la méthode constrId ...



    et niveau perf alors ? y'a du mieux ?

  7. #27
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 139
    Par défaut
    J'ai réussi apparemment à corriger cette exception.

    En réalité ça venait du fait que je faisais expirer le cache toutes les 20secondes.
    Du coup j'ai l'impression que lorsque l'appli essayait de se connecter au cache au moment où celui ci s'expirait, il accédait à un contenu vide et ça créait cette erreur.. J'ai modifié mes temps d'expiration et là ça roule

    Et niveau perf, au premier lancement ça met autant de temps (une progressBar), mais après quand on se reconnecte à l'appli ça va carrément plus vite (1/3 de progressBar)
    Maintenant reste à savoir si dans le temps ça va tenir la route.

  8. #28
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    et oui au premier lancement de tt façon, il n'y a rien à espérer tant que ce n'est pas dans le cache.

    bon et bien je suis content que tu aies abouti

  9. #29
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 139
    Par défaut
    Mais avant tout merci à toi pour ta précieuse aide

    Sinon Yourkit m'a bien servi aussi pour ce coup là, il m'a permis de voir les 2 requêtes "principales" qui coutaient le plus de ressources. Du coup en les mettant en cache par effet cascade les autres requêtes qui dépendaient de ces 2 là sont du coup moins appelées

    Bref, un sujet de réglé, maintenant je vais m'attaquer au stockage des requêtes ce qui va être chocolat

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Performance] Solution pour mettre en cache l'application
    Par anthyme dans le forum Silverlight
    Réponses: 6
    Dernier message: 28/02/2008, 13h11
  2. Mettre en cache une requête sql
    Par mims1664 dans le forum Langage
    Réponses: 7
    Dernier message: 07/03/2007, 14h19
  3. Réponses: 15
    Dernier message: 15/10/2006, 20h34
  4. [Data] [Cache] Comment mettre en cache un objet ?
    Par Ho(c)ine. dans le forum Spring
    Réponses: 2
    Dernier message: 02/02/2006, 07h33
  5. Réponses: 2
    Dernier message: 27/09/2005, 12h46

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