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 :

Obtenir un Stateful bean par client


Sujet :

Java EE

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Obtenir un Stateful bean par client
    Bonjour,

    Je dois réaliser un panier/caddie qui sera utilisé par des clients pour stocker leurs articles et valider leurs achats, sur le même modèle que le tutorial J2EE5 Sun: http://java.sun.com/javaee/5/docs/tu.../Session2.html

    Mon problème est que tous les clients du site partagent actuellement le même caddie... Pour fonctionner, ma servlet du type "AjouterArticle" récupère ce caddie en utilisant l'annotation @EJB RemoteCart cart.

    Comment faire pour pouvoir créer autant de caddies que des clients et récupérer le bon caddie lors de l'ajout de l'article par un client lambda ?

    Dans les sources du tutorial Sun, seul un client est utilisé, ce qui évite le prolème... Je n'arrive pas à trouver un exemple similaire à mon problème!

  2. #2
    Membre confirmé

    Inscrit en
    Avril 2005
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 317
    Points : 553
    Points
    553
    Par défaut
    Tu peux nous donner un apercu du code de ta servlet cliente ?

  3. #3
    Membre confirmé 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
    Points : 554
    Points
    554
    Par défaut
    Citation Envoyé par gfox1984

    Comment faire pour pouvoir créer autant de caddies que des clients et récupérer le bon caddie lors de l'ajout de l'article par un client lambda ?
    Si tu as écrit la même classe d'implémentation et interface que sur le tutorial de sun, comme ton session bean est annoté "stateful", chaque client est lié à son ejb RemoteCart... Tu n'as besoin de rien spécifier de plus que l'annotation "stateful"...

    Mon problème est que tous les clients du site partagent actuellement le même caddie...
    Tu es sûr de ça ?

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Panier virtuelle - EJB 3 Stateful
    Je ne vois pas pourquoi vous voulez que vos clients partagent le même panier, normalement chaque client doit disposer de son propre panier virtuelle (instance d'un EJB 3 Stateful pour gérer l'état de chaque panier - client).
    Les instances de votre EJB sont stockés que vous pouvez manipuler en accèdant au SessionContext de vos EJB.

    4 méthodes existent pour récupérer le contexte des EJB :

    1- Utilisation de l'injection de la ressource (méthode la plus simple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @Resource
    private SessionContext sctx;
    2- Utilisation d'un setter pour l'injection de la ressource
    private SessionContext sctx;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @Resource
    private void setSessionContext(SessionContext sctx) {
      this.sctx = sctx;
    }
    3- Recherche de la ressource injecté en utilisant son nom :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @Resource(name="sessionContext")
    private SessionContext sctx;
     
    try {
          InitialContext ic = new InitialContext();
          SessionContext sctxLookup =
                 (SessionContext) ic.lookup("java:comp/env/sessionContext");
          System.out.println("look up injected sctx: " + sctxLookup);
    } catch (NamingException ex) {
          throw new IllegalStateException(ex);
    }
    4- Recherche par le nom standardd java:comp/EJBContext

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    try {
        InitialContext ic = new InitialContext();
        SessionContext sctxLookup =
           (SessionContext) ic.lookup("java:comp/EJBContext");
        System.out.println("look up EJBContext by standard name: " + sctxLookup);
    } catch (NamingException ex) {
        throw new IllegalStateException(ex);
    }

Discussions similaires

  1. [AC-2007] Obtenir 5 réponses max par client
    Par Oliv'83 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 04/01/2013, 19h14
  2. Accès aux Session Beans par un client J2SE distant
    Par saveriu dans le forum Glassfish et Payara
    Réponses: 2
    Dernier message: 05/01/2012, 16h36
  3. Réponses: 9
    Dernier message: 29/11/2010, 22h05
  4. Appel du même bean par plusieurs clients
    Par mouna- dans le forum Développement Web en Java
    Réponses: 6
    Dernier message: 23/11/2010, 11h48
  5. Réponses: 4
    Dernier message: 11/10/2006, 21h36

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