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 :

[Débutant] Comment conserver une session avec des EJB ? [EJB3]


Sujet :

Java EE

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut [Débutant] Comment conserver une session avec des EJB ?
    Bonjour,

    J'utilise actuellement la jsr-170 (java content repository) et je voudrais développer un service (sous forme d'EJB3) me permettant d'accéder à mon repository.
    J'ai donc développé un EJB Stateless muni de méthodes "manipulant" les différents types de noeuds.
    L'accès au repository nécessite cependant l'ouverture d'une session avec un Credential... Ou puis-je ouvrir et conserver celle-ci ?
    Dans mon EJB Stateless (sous quelle forme, un membre private ne sera pas conserver... non ?) ?
    Dans un context mais lequel ?
    Via un interceptor ?

    Merci de votre réponse...

  2. #2
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Par défaut
    Je ne connais pas les données que tu manipules (jsr 170...) cependant cela ressemble plus à un session bean stateful qu'il te faudrait manipuler...

    Dans ton session bean stateful, tu sauvegardes les infos concernant la session.

  3. #3
    Invité
    Invité(e)
    Par défaut
    En fait mon problème, me semble t-il, n'a pas de relation avec la nature des données que je manipule mais d'une confusion qui doit subsister dans ma compréhension des ejbs.

    D'abord, pouvez-vous me confirmer qu'une donnée (ici une référence vers mon objet session) stockée en tant que membre privée ne sera pas conservée d'un appel de méthode à l'autre ?

    Voici mon ejb d'accès :
    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
     
    ...
     
    @Stateless (name="ServiceRepository")
    public class ServiceRepositoryBean implements ServiceRepositoryLocal, ServiceRepositoryRemote
    {
        @Resource (name="jcr/Repository")
        private  Repository repository;
     
        private Session session;
     
        /** Creates a new instance of ServiceRepositoryBean */
        public ServiceRepositoryBean ()
        {}
     
        @PostConstruct
        public void postConstruct () throws Exception
        {
            Credentials credentials = new SimpleCredentials (login, password.toCharArray ());
            session = repository.login (credentials);
        }
     
        @PreDestroy
        public void logout ()
        {
            session.logout ();
        }
     
        public String getNameByUUID (String targetUUID) throws Exception
        { return session.getNodeByUUID (targetUUID).getName (); }
    Si j'invoque la méthode getNameByUUID plusieurs fois depuis un autre ejb en local ou en remote... je n'ai aucuns problèmes.
    En revanche, si je l'invoque depuis un client (Main inclus dans mon ear) ou bien ManagedBean (JSF inclus dans le même ear)... j'ai une grosse exception.

    Comme si j'avais un comportement différent de mon ejb dans un cas ou dans l'autre... et le Statefull n'y change rien.

  4. #4
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Par défaut
    Personnellement, un stateless avec des attributs ça me choque. De plus je ne connais pas du tout les objets que tu manipules dans ton postConstruct, donc je ne comprends pas ce que doit faire ton EJB...

    Désolé, mais je ne peux pas t'aider plus... Quelqu'un d'autre le pourra très certainement

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci quand même.

    Il est vrai que je sort du cadre habituel de l'utilisation des EJB.
    Je n'ai réussi à trouver de documentation sur le cycle de vie des attributs (propre à l'ejb stateless) lorsqu'il est invoqué par différents clients.

    J'ai pu cependant noté que mon attribut privée session était parfaitement utilisable de Stateless à Stateless, mais provoquait une Exception de Client(BackingBean ou Main) à Sateless.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 79
    Par défaut
    moi je vois pas pourquoi tu places un private Session dans un stateless..??
    puisque justement le stateless est fait pour éviter cela.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment créer une application avec des switchs
    Par abderrahim_05 dans le forum Débuter
    Réponses: 5
    Dernier message: 28/12/2007, 19h07
  2. Comment structurer une application avec des multiples versions ?
    Par Worldofdada dans le forum Windows Forms
    Réponses: 5
    Dernier message: 31/05/2007, 10h52
  3. Réponses: 3
    Dernier message: 09/08/2006, 11h58
  4. [PHP-JS] Comment créer une boucle avec des headers
    Par djinnwatcher dans le forum Langage
    Réponses: 10
    Dernier message: 17/07/2006, 15h48
  5. Réponses: 2
    Dernier message: 03/05/2006, 17h00

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