Bonjour,
J'ai deux ManagedBean (tous deux en session) qui utilise un EJB statefull. J'ai un problème lorsque je modifie une valeur de mon EJB dans un des ManagedBean ces modifications ne sont pas visible par l'autre ManagedBean et je ne comprend pas pourquoi.
Typiquement j'ai ceci :
L'EJB :
Le premier ManagedBean qui modifie appel la méthode connect de mon EJB :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 @Stateful public class UserManager implements IUserManager { @PersistenceContext(unitName = "myData2") EntityManager em; private boolean connected = false; @Override public ConnectStatus connect(String user, String pwd) { this.connected = true; } }
Et le deuxième Managed 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
17
18
19
20
21
22 @ManagedBean(name = "login") @SessionScoped public class LoginController { @ManagedProperty(value="#{gestionnairec}") IGestionnaireController gestionnaire; @EJB IUserManager um; //getter setter enlevé pour une meilleur visibilité public String connect() { ConnectStatus result = um.connect(user, pwd); gestionnaire.showUser(); return ""; } public boolean isConnected() { System.out.println("Person 4 : " + um.isConnected()); //affiche bien les infos modifiés return um.isConnected(); }
Avez vous une solution ?
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 @ManagedBean(name = "gestionnairec") @SessionScoped public class GestionnaireController implements IGestionnaireController { private static final int NB_PERSON = 100_000; @EJB IUserManager um; //getter setter @Override public void showUser() { System.out.println("Person : " + um.isConnected()); //retourne false au lieux de true les modifs ne sont pas prise en comtpe }
Je vous remercie d'avance.
Partager