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 :

Le conserver en session ? [EJB Stateless]


Sujet :

Java EE

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 222
    Par défaut Le conserver en session ?
    Bonjour,

    j'ai développé une classe qui est une EJB Session Bean Stateless, et j'aimerai savoir si on peut garder en session une variable de cette classe.
    Si oui, comment procède-t-on ?
    Si non, faut-il utiliser les session bean STATEFUL (j'ai essayé mais ça n'a pas marché)

    Merci

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Ben non, on ne peut pas avec un stateless... Le statefull est là pour ça...

    Quel est le problème du statefull ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 222
    Par défaut
    Je vais t'expliquer ce que je voudrais faire dans mon statefull.

    Dans cette classe, je voudrais qu'il y ait une variable d'instance List<MonObjet> list qui représente les valeurs de la table MonObjet afin de les afficher dans une dataTable. Pour cela, je voudrais remplir cette liste dans le constructeur de la classe, or ce n'est pas possible car mon EntityManager est null, du coup je ne peux pas faire, par exempe, de em.createQuery.

    Donc première question, comment puis-je initialiser ma variable list ?

    Ensuite, comment signaler, que je veux garder ma liste en session, est ce que ça le fait tout seul ou faut-il passer par des annotations ?

    Lorsque j'ai essayé de déployer un Statefull, le serveur d'application m'a fait une erreur, il faut une méthode sans paramètre annoté de @Remove, donc est ce qu'il faut aussi une méthode lors de la création ?

    Merci

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Tu utilises les EJB3 ?

    Si oui, j'utiliserais une méthode @PostConstruct pour charger la liste. Normalement, à ce moment, l'EntityManager doit être disponible.

    Pour la méthode @Remove, tu peux lui mettre un corps vide si tu n'as pas de ressources à libérer.

    Tu n'as pas à signaler que tu veux garder ta liste en session, c'est automatique, du moment que ton EJB stateful n'est pas détruit, la liste demeure...

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 222
    Par défaut
    Oui j'utilise les EJB3

    En effet, j'ai mis une méthode, qui permet d'initialiser ma variable, annoté de @PostConstruct dans ma classe Statefull.
    Mais le problème, c'est qu'à chaque fois que je clique sur une ligne de ma dataTable, ça appelle cette méthode, et ça passe par le constructeur de ma classe.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Par défaut
    Dans ta méthode @ postconstruct
    if(listObjet == null) listObjet = loadListObjet();
    Une forme de lazy initialisation

    Par contre ce qui me surprends c'est que ta méthode annoté @postconstruct est appelée systématiquement à chaque appel EJB.

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

Discussions similaires

  1. puis-je conserver 2 sessions a la fois?
    Par lepetitjoe dans le forum Struts 1
    Réponses: 3
    Dernier message: 31/05/2008, 22h38
  2. Réponses: 1
    Dernier message: 20/04/2007, 09h48
  3. [EJB3] [Débutant] Comment conserver une session avec des EJB ?
    Par Invité dans le forum Java EE
    Réponses: 5
    Dernier message: 08/02/2007, 23h36
  4. [AJAX] connexion par ajax en conservant la session
    Par gorgonite dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/08/2006, 21h56
  5. [SERVLET][JSP]conserver sa session
    Par jse dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 26/08/2004, 13h53

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