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

Java EE Discussion :

[EJB] Interceptor et contexte


Sujet :

Java EE

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 31
    Par défaut [EJB] Interceptor et contexte
    Bonjour,

    J'ai plusieurs interrogations et j'aimerai que vous m'aidiez à éclaircir certaines zones d'ombres. Voici mes questions :

    - Les clients doivent-ils forcément être sur le même serveur que les sessions beans ?
    - Si oui, si un client utilise les contextes application, session, peut-on y accéder dans une session bean ? un interceptor ? comment ?

    En fait la finalité de ces questions est celle qui met en place la sécurité des méthodes des sessions beans. Le but est de pouvoir invoquer ou non une méthode suivant l'identité de l'appelant. Avec un interceptor on peut avoir accès à un entity manager pour vérifier l'existence d'une identité, mais je ne vois comment transmettre l'identité de l'appelant ? A part en paramètres, mais bon c'est pas très élégant...

    Merci

  2. #2
    Rédacteur
    Avatar de longbeach
    Profil pro
    Architecte de système d’information
    Inscrit en
    Avril 2003
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Avril 2003
    Messages : 943
    Par défaut
    Dans les EJB 3, il existe des annotations pour définir des autorisations, soit au niveau des classes, soit au niveau des méthodes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    @Stateless(name="XBean")
    public class XBean implements X {
       @RolesAllowed("admin")
       public void methodeA() { ... }
       ...
    }
    Sinon de façon déclarative dans le fichier XML.

  3. #3
    Membre averti
    Inscrit en
    Février 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 31
    Par défaut
    Oui j'avais vu cette solution. Mais le problème c'est que les autorisations dépendent d'un fichier XML et dans mon cas d'une base de données. J'aimerai en fait pouvoir récupérer l'équivalent de httpSession dans une servlet dans mon interceptor. Est-ce possible ? ou alors je me trompe complètement dans le sens où le client(une servlet) qui utilise mes sessions beans et qui met des choses dans le contexte n'est pas forcément sur le même serveur et que par conséquent mes sessionBeans, mes interceptors... ne peuvent pas accéder à ce contexte ? peut-être n'ont t-ils pas de contextes puisque n'étant pas des applications dans le sens où ils ne correspondent pas à des répertoires de Webapps ?

  4. #4
    Membre averti
    Profil pro
    Architecte
    Inscrit en
    Mai 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2005
    Messages : 18
    Par défaut
    Tu ne peux pas accéder à ta session http dans des EJB ou des interceptors.

    Par contre, tu as un context EJB (EJBContext) qui contient le Principal.

    Pour avoir l'ejbcontext dans un interceptor, tu as la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javax.ejb.InvocationContext.getEJbContext()
    ou dans un EJB avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    @Resource
    private SessionContext sctx;
    Le Principal est passé "automatiquement" au conteneur J2EE par les clients EJB (ex: servlet). Encore faut-il que l'utilisateur soit authentifié via un mécanisme JAAS (c'est le cas pour les authentifications effectués par les conteneurs). Si tu as une page de login spécifique, tu peux utiliser les "LoginModule" mis à ta disposition par le conteneur.

Discussions similaires

  1. Construction d'un contexte au deploiement d'un ejb
    Par Heimdal dans le forum Java EE
    Réponses: 0
    Dernier message: 24/06/2009, 15h21
  2. Chargement contexte spring EJB
    Par totoranky dans le forum Spring
    Réponses: 1
    Dernier message: 02/04/2009, 13h36
  3. [EJB Timer] EJB-timer et servlet context listener
    Par geos25 dans le forum Java EE
    Réponses: 1
    Dernier message: 01/07/2008, 14h16
  4. [EJB] Récupérer le contexte
    Par thecaptain dans le forum Services Web
    Réponses: 1
    Dernier message: 07/11/2006, 15h39

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