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

Langage Java Discussion :

L'implémentation dynamique en Java (classe Proxy et InvocationHandler) [Tutoriel]


Sujet :

Langage Java

  1. #1
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut L'implémentation dynamique en Java (classe Proxy et InvocationHandler)
    Bonjour,

    L'implémentation dynamique est très présente dans notre monde de Javaiste, et plus particulièrement dans l'architecture EE. Elle reste cependant mal connue et parfois mal comprise.

    J'ai donc décidé d'écrire un article sur cette pratique (qui est très utilisée par les conteneurs d'applications EE), afin de la rendre plus accessible pour tous.

    L'article est disponible à cette adresse.

    Bonne lecture à tous.
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  2. #2
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Bonjour,

    J'aurai une petite question concernant les intercepteurs :

    public Object nextInterceptor() {
    try {
    return interceptors[index++].invoke(this);
    } finally {
    index--;
    }
    }
    Si j'ai bien compris :
    • index vaut initialement 0,
    • le premier intercepteur est appelé (interceptors[0]) et index passe à 1
    • comme interceptors[0] est un LoggingInterceptor, il appel interceptors[1] qui est un BeanInterceptor et index passe à 2


    Donc :
    • index-- dans le finally permet après chaque retour de décrémenter l'index et ainsi de le remettre à 0 :
      • de 2, il passe à 1 (après le return de invoke de BeanInterceptor) et
      • de 1, il passe à 0 (après le return de invoke de LoggingInterceptor)


    • l'ordre des Interceptor de ton exemple est important car LoggingInterceptor appel l'intercepteur suivant (BeanInterceptor) mais l'invoke de BeanInterceptor n'appel pas d'autre intercepteur donc :
      • si on rajoute un Interceptor après BeanInterceptor dans ton tableau, il sera ignoré
      • si on inverse BeanInterceptor et LoggingInterceptor, LoggingInterceptor sera ignoré


    Peux tu me confirmer cela ?

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  3. #3
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    C'est exactement ça
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 4
    Points : 2
    Points
    2
    Par défaut ArrayIndexOutOfBoundsException
    Bonjour Messieurs,

    Je relisais un peut le fil de la discussion et il y un petit truc qui me titille. En effet, quelqu'un s'est-il aperçu de cette exception éventuelle?
    java.lang.ArrayIndexOutOfBoundsException.
    Évidemment, ici on n'est dans une "post incrémentation (index++)". Donc tout vas bien lorsqu'il y a un seul intercepteur dans le tableau. Mais avez-vous fait le test avec plus d'un intercepteur en appelant simple invocation.nextInterceptor(); dans chaque intercepteur?

Discussions similaires

  1. Proxys dynamiques sur des classes
    Par djanggawul dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 03/08/2010, 11h31
  2. java.lang.reflex la classe Proxy
    Par damien77 dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 20/12/2008, 09h18
  3. Utilisation de Classe Proxy
    Par BigNic dans le forum C++
    Réponses: 3
    Dernier message: 03/01/2006, 09h36
  4. [débutant][Conception] Structure dynamique avec Java
    Par blaiseac dans le forum Général Java
    Réponses: 5
    Dernier message: 18/11/2004, 23h00

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