Bonjour,
voila je souhaite utiliser un session bean statefull afin de garder les informations d'un client et les actions effectuees.
Mon architecture : client lourd (swing) qui communique avec un web service.
pour effectuer un test j'ai creer un session bean tout simple qui increment une valeur a chaque appel de la fonction.
voici le code
rien de bien dificile
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 @Stateful public class StateFulUserBeanBean implements StateFulUserBeanLocal { private Integer i = null; public String incrementInt() { return "result" + i++; } public String getVar() { return "var" + i; } }
j'ai creer un webservice avec netbeans qui fait appel au statefull session bean.
voici le code
puis ensuite je cree un client swing qui fait appel a ce web service ou on peux utiliser un navigateur ( Test sous netbeans du web service).
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
17
18
19
20
21
22
23 import javax.ejb.EJB; import javax.jws.Oneway; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; @WebService() public class NewWebService { @EJB private NewSessionLocal ejbRef; // Add business logic below. (Right-click in editor and choose // "Web Service > Add Operation" @WebMethod(operationName = "incrementInt") public String incrementInt() { return ejbRef.incrementInt(); } @WebMethod(operationName = "getVar") public String getVar() { return ejbRef.getVar(); } }
Quand j'appel increment () la variable s'increment bien donc j'en deduit que l'etat est concerve , Vrai?
Mon probleme reside dans le fait que quand une personne appel ce web service par un navigateur ( Test dans netbeans) ou l'appli swing et clique sur increment, le session prend la valeur du dernier increment effectue par l'autre client. Je pensais que l'on avait une instance d'un session bean par client . Donc chacun devrais avoir une valeur different, quand un nouveau client se connect il devrait valoir 0 , NON?
merci de prendre un peu de temps pour me repondre
Partager