Bonjour à Tous,
Je débute sur les EJB3.. et perdu sur un point :
Stateful/Stateless; Dans mon exécution les 2 comportements sont contraires à ce qui est attendu. J'ai un Bean comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 @Remote public interface Cart { public void addItem(float item); public ArrayList<Float> getItems(); }Puis un Client Java 'classique' :qui appelle la méthode add puis affiche le contenu de la liste et le HashCode de l'objet Cart(interface):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public class CartBean implements Cart{ private ArrayList<Float> items = new ArrayList<Float>(); @Override public void addItem(float item) { items.add(item); } }
Résultat suivant le cas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Cart cart = (Cart) ic.lookup("CartBean/remote"); // 1: add() cart.addItem(2.2f); // affichage hashcode System.out.println("HASHCODE : " + cart.hashCode()+"\r\t"); // affichage contenu liste ArrayList<Float> list = cart.getItems(); for (float item : list) System.out.println(">> " + item + "<br>");
STATEFUL:
Le Hashcode(de l'objet anonyme Cart) change (donc pas la meme instance ?)
La liste est réinitialisée
STATELESS :
Meme HashCode
la méthode Add viens ajouter dans la suite de la liste (mais pas toujours).
> Bref n'est-ce pas l'inverse qui est attendu.. ou ai-je mal compris un point.
![]()
Partager