Question à propos de StateFul / Stateless
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:
1 2 3 4 5 6 7
| @Remote
public interface Cart {
public void addItem(float item);
public ArrayList<Float> getItems();
} |
Code:
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);
}
} |
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:
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>"); |
Résultat suivant le cas :
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.
:java: