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

Autres Java Discussion :

[AspectJ] Création d'un aspect de journalisation avec AspectJ [Tutoriel]


Sujet :

Autres Java

  1. #1
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut [AspectJ] Création d'un aspect de journalisation avec AspectJ
    Bonsoir,

    Objis a écrit un nouvel article sur AspectJ : Création d'un aspect de Log AspectJ

    N'hésitez pas à commenter

    Bonne soirée

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Points : 4 792
    Points
    4 792
    Par défaut NetBeans
    Comment fait-on dans NetBeans ?
    - création de LogAspect.aj avec reconnaissance de la syntaxe par NB.
    - compilation avec ajc (en principe une tâche ant)

    AspectJ semble séduisant, mais si c'est trop lourd à inclure dans un IDE,
    je ne pourrai pas l'utiliser

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Points : 15
    Points
    15
    Par défaut
    Bonjour Népomucène,

    Un plugin aspectJ existait pour Netbeans 3.5.x : http://aspectj-netbeans.sourceforge.net/ , mais pas de suivi semble t'il.

    La video suivante fait une démo de création d'aspects et tissage avec AspectJ dans Netbeans : [ame="http://www.youtube.com/watch?v=7Ak3hOk95PY"]YouTube- AspectJ On Netbeans[/ame]

    Un projet de plugin AspectJ pour Netbeans 6.x semble avoir démarré http://projectkenai.com/projects/nbaspectj mais rien de produit.

    La recommandation est de passer par ANT.

  4. #4
    Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut AspectJ
    Bonjour ,
    j ai un petit problème avec aspectj dont je vais le simplifier par un
    exemple affin de rendre les chose plus claire

    j ai 2 class une abstract et l autre une class qui hérite de cet
    abstract class une methode non abstraite
    public abstract class AbstractService<blabla>{
    public void method1(..){
    .......}
    abstract method2(..);
    }

    public class MyClass extends AbstractService{
    public void method2(){}

    }

    public class Test(){

    public static void main(..){
    MyClass myclass= new MyClass ();
    myclass.method1(..);
    }
    }

    l objectif c est d intercepter l exécution de la "method1" sauf que
    aspectj me dit qu il l a intercepter au niveau
    AbstractService.method1() alors que l instance qui a fait appel a
    cette method1 c est myclass et c est pas ça que je voulais . ma
    question est : y a t il un moyen pour que je puisse intercepter l
    exécution de la method1 qui n est pas redéfini dans MyClass mais qui
    est invoqué par cette dernière c.a.d que le résultat soit
    "myclass.method1()" au lieu de "AbstractService.method1() ".
    Merci d avance.

  5. #5
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558
    Par défaut
    Il y a une (très) légère erreur dans le tutoriel.
    Le pointcut écrit dans le paragraphe 7 ("pointcut logRetrait() : execution(* com.objis.demoaspectj.banque.CompteBancaire.retrait(..));") ne correspond pas au code écrit précédemment dans le paragraphe 6.
    Il faudrait utiliser un pointcut "call" au lieu de "execution"
    La différence (subtile) est que dans le cas du "call" le code est ajouté dans la méthode appelant la méthode correspondante au joinpoint. Alors que dans le cas du pointcut "execution" le code est ajouté dans la méthode du joinpoint.

    Cela peut entraîner des comportement légèrement différent. Le tissage n'étant pas réalisé de la même facon, il est possible avec le pointcut "call" que tout les appels ne soit pas tracé. De plus, les performance ne sont pas complètement identique (par exemple, les optimisation et la compilation JIT ne seront pas faite de la même manière dans les 2 cas)

  6. #6
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558
    Par défaut
    @yosri32
    Ta méthode sera quand même intercepté. Quel est le problème ?
    Peux tu nous montrer l'aspect qui est utilisé ?

    PS: Ce serait plus agréable pour la lecture si le code était correctement formaté à l'aide des balise qui vont bien.
    PPS: Est ce que la touche apostrophe est en panne ?

  7. #7
    Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    ma class AbstractService
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public abstract class AbstractService<blabla>{
    public void method1(..){
    // il y a du code 
    }
    abstract void method2();
    }
    MyClass qui herite de AbstractService et qui ne redéfinie pas method1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class MyClass extends AbstractService<..>{
    public void method2(){
    //implemented method
    }
    }
    ma class de test qui fait appel a la method1 avec une instance de MyClass
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class Test(){
     
    public static void main(..){
    MyClass myclass= new MyClass ();
    myclass.method1(..);
    }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pointcut = execution(void MyClass.method1(..))
    mon objectif c'est d'intercepter l'exécution de la "method1" sauf que
    aspectj me dit qu il l a intercepter au niveau
    AbstractService.method1() alors que l'instance qui a fait appel a
    cette method1 c'est myclass et c'est pas ça que je voulais . ma
    question est : y a t il un moyen pour que je puisse intercepter l'exécution de la method1 qui n est pas redéfini dans MyClass mais qui
    est invoqué par cette dernière c.a.d que le résultat soit
    "myclass.method1()" au lieu de "AbstractService.method1() ".
    Merci d avance.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Points : 97
    Points
    97
    Par défaut
    Excellent tutoriel pour aborder AspectJ: bien mieux écrit que le tutoriel présent sur le site AspectJ il permet de comprend immédiatemment l'interêt de l'outil.
    Merci de l'avoir "porté" sur developpez.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut aspectj et tomcat
    BON SOIR
    j'ai une application JEE " web annonce" et j'inserer une aspect de loggin
    mais j'ai un problem au niveua de TOMCAT lors d'execution
    svp qui me peut donner une idee.merci

  10. #10
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 2
    Points : 3
    Points
    3
    Par défaut connexion projet aspect sur d autre projet
    Bonjour,

    J aurais voulu savoir si c était possible de créer son projet aspectJ sur un projet maven dans eclipse et de l utiliser après sur d autre projet lors de leur exécution ? et si oui comment faut il faire ?

    Par exemple sur ce cas d exemple avoir un projet 1 qui contient le projet bancaire. et avoir un projet 2 qui contient les classes aspect.

    (point bonus, mon projet 1 est sous RCP) à dispo si besoin de plus de details.

    Merci pour votre aide

    bonne soiree

Discussions similaires

  1. Réponses: 10
    Dernier message: 02/03/2015, 14h13
  2. [AspectJ] Programmation par aspect (AOP) avec AspectJ
    Par Bassemca dans le forum Autres
    Réponses: 1
    Dernier message: 19/12/2009, 13h50
  3. Création d'une variable de session avec un ID
    Par PrinceMaster77 dans le forum ASP
    Réponses: 4
    Dernier message: 18/10/2004, 11h28

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