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

Spring Java Discussion :

Temps d'éxecution Requête Dao


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 123
    Par défaut Temps d'éxecution Requête Dao
    Bonjour, durant la phase de développement de mon application, je souhaiterais avoir le temps d'exécution des fonctions de mes DAO.
    Alors j'avais pensé au
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    long t1=System.currentTimeMillis();
    long t2=System.currentTimeMillis();
    System.out.println((t2-t1);
    Le System.out.println, c'est parce que dans un premier, je ne compte l'utiliser que lors du développement. Je mettrais bien sur un logger si jamais ca devient plus sérieux

    Pour faire cela de manière plus propre, j'avais pensé le faire en utilisant Spring AOP. Je me trompe peut-être, il y a peut-être des solutions plus simple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	<aop:config>
    		<aop:pointcut id="servicePointcut"  expression="execution(* appli.dao.mysql.*.*(..))"/>    		
    		<aop:aspect id="loggingAspect" ref="monMonitor">
    		    <aop:before method="monitorEntry"  pointcut-ref="servicePointcut"/>    		
    		    <aop:after-returning method="monitorExit" returning="result" pointcut-ref="servicePointcut"/>
    	    </aop:aspect>	    
    	</aop:config>
     
      	<bean id="monMonitor" class="appli.test.dao.mysql.MonitorSQL"/>
    Ca marche très bien, Spring m'appelle bien mes 2 fonctions. Mon problème, c'est comment mettre en place mes 2 Timer t1 et t2 pour que je puisse dans la méthode monitorEntry définir le t1
    et dans la fonction monitorExit définir le t2, afficher le nom de la méthode, et ensuite le temp (t2-1).

    Pour le nom de la méthode, je sais qu'il faut utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     String name = staticPart.getSignature().toLongString();
    D'avance merci.

  2. #2
    Invité de passage
    Inscrit en
    Juin 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 2
    Par défaut Around
    Il te faudrait utiliser un aspect around pour avoir la main, dans la même méthode, à la fois avant et après l'exécution de ton appel. Ta classe de monitoring pourrait ressembler à ca :

    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
     
    public class MonitorSQL {
     
      private static final Logger LOGGER = LoggerFactory.getLogger(MonitorSQL.class);
     
      public Object monitorDaoEffectiveTime(ProceedingJoinPoint pjp) throws Throwable {
        // stockage du temps avant l'appel
        long t1 = System.currentTimeMillis();
     
        // on laisse l'appel s'executer
        pjp.proceed();
     
        // stockage du temps apres l'appel
        long t2=System.currentTimeMillis();
     
        // on recupere le nom de la methode
        String name = staticPart.getSignature().getName();
     
        // on log le tout
        LOGGER.debug ("La methode {} a ete executee en {} ms", name, t2 - t1);
      }
    }
    Je n'ai pas mis les import, mais j'ai mis l'output avec la syntaxe SLF4J.

    et dans ton applicationContext.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <aop:config>
      <aop:pointcut id="servicePointcut"  expression="execution(* appli.dao.mysql.*.*(..))"/>    		
      <aop:aspect id="loggingAspect" ref="monMonitor">
        <aop:around method="monitorDaoEffectiveTime" pointcut-ref="servicePointcut"/>
      </aop:aspect>	    
    </aop:config>
     
    <bean id="monMonitor" class="appli.test.dao.mysql.MonitorSQL"/>
    En espérant que ca t'auras été utile.

  3. #3
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 123
    Par défaut Policy Manager Tomcat Aspect
    Re-Bonjour à tous.

    Je me permet de réouvrir ce post, car j'ai un autre souci qui découle du premier.

    Après avoir mis en place mon système de temps d'éxecution des requêtes (tout marche très bien).

    J'ai voulu déployez mon archive war sur un serveur Tomcat installé sur ubuntu.

    Lors du déploiement de mon archive, j'ai de nombreuses erreurs du aux règles de Policy de type java.security.AccesControlException: access denied

    Alors, pour le moment, je rajouter un par un les permissions dans le fichier security.policy. Mais je me demandais si au final, il n'étais pas nécessaire d'installer quelques choses pour pouvoir utiliser Tomcat avec AspectJ .

    D'avance merci.

Discussions similaires

  1. Temps d'éxecution d'une requête longue
    Par Adm_Antonio dans le forum Administration
    Réponses: 13
    Dernier message: 04/06/2008, 15h11
  2. Réponses: 2
    Dernier message: 04/04/2006, 11h46
  3. Réponses: 4
    Dernier message: 24/11/2005, 08h34
  4. [Data] Requête DAO
    Par hocinema dans le forum Spring
    Réponses: 3
    Dernier message: 29/09/2005, 18h59
  5. Ressources, temps de réponse, requète ...
    Par _____M_____ dans le forum Administration
    Réponses: 16
    Dernier message: 31/03/2004, 16h12

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