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 Stateful vs Stateless


Sujet :

Java EE

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 7
    Points : 7
    Points
    7
    Par défaut EJB Stateful vs Stateless
    Bonjour à tous,

    Je reviens sur quelque chose qui est expliqué partout :stateless on ne garde pas l'état et stateful on le garde.
    Sauf que, bin voilà, dans l'exemple simple que je vais donner, ça me fait l'inverse.

    Quand je fais un appel avec StateLess j'ai bien Hello Hello Hello
    Un second appels dans la foulée avec Stateless, j'ai Hello Hello Hello Hello Hello Hello
    etc...

    Avec Stateful, au 1er appel j'ai Hello Hello Hello
    au second Hello Hello Hello
    au 3éme Hello Hello Hello
    etc....

    Bref, ce que je constate c'est que stateless garde la chaine de caractère, tandis que stateful la réinitialise.

    Où est mon erreur?

    Merci

    Mon bean:
    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
    @Stateful // ou stateless
    public class HelloBean implements Hello {
     
    	public HelloBean() {}
     
    	private String buffer = "";
     
    	public String sayHello() {
           return buffer;
       }
     
       public void addHello(String hello) {
            buffer += hello + " ";
       }
     
    }
    Mon appel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public static void main(String[] args) {
    		Hello bean = doLookup();
     
    		bean.addHello("Hello"); // (3)
    		bean.addHello("Hello"); // (3)
    		bean.addHello("Hello"); // (3)
    		System.out.println(bean.sayHello()); // 3. Call business logic
    	}

  2. #2
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Pour ton EJB stateless, ce que tu constates, c'est que à chaque appel, tu utilises la même instance. Ça prouve juste que ton EJB est dans un pool et que le pool te fournit toujours la même instance. Si tu augmentes le nombre de clients concomitants, le comportement risque de changer : il peut arriver que tu changes d'instance entre 2 appels de addHello.

    Pour ton EJB stateful, l'état est conservé le temps d'une session, c'est-à-dire entre le lookup et le remove (qui manque dans ton code). A chaque lookup, tu crées une nouvelle instance, avec un buffer vide.

    En fait, stateful te garantie l'état dans une session alors que stateless ne te garantie rien sur l'état, même s'il y en a un.

Discussions similaires

  1. EJB Stateful dans EJB Stateless
    Par Danicela dans le forum Java EE
    Réponses: 2
    Dernier message: 01/05/2012, 20h58
  2. [EJB Stateful] Connexion JDBC pure avec EJB Stateful
    Par saveriu dans le forum Java EE
    Réponses: 0
    Dernier message: 30/11/2009, 18h24
  3. Le package javax.ejb, Remote et Stateless
    Par amira88 dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 20/11/2009, 12h09
  4. [EJB Stateful] Fonctionnement des EJB Stateful Session Bean
    Par T`lash dans le forum Java EE
    Réponses: 3
    Dernier message: 15/04/2008, 03h10
  5. [EJB] Utilisation de l'EJB Stateful Session sans HttpSession
    Par infotron dans le forum Java EE
    Réponses: 2
    Dernier message: 09/08/2007, 15h19

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