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 :
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;
	}
}
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
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();
	}
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
@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
	}
Avez vous une solution ?
Je vous remercie d'avance.