Bonjour
pour le besoin de mon application web (JSF/MyFaces, Tomact ) (web + service + DAO) je dois conserver les informations de l'utilisateur, et de pouvoir les exploiter plus tard (niveau DAO ou Service).
la solution, j'ai essayé de mettre en place un Thread local dans le quel je stocke le User, et je le récupére plus tard niveau DAO.
le problème quand deux utilisateurs se connectent, les informations de l’ancien sont écrasées par celle du nouveau (ce qui normale puisque mon thread local est "static" )
quelqu’un pourrait m'expliquer comment procéder pour mettre en place ce thread par session utilisateur?
ContextUtils.java
Context.java
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 public final class ContextUtils implements Serializable { private static ThreadLocal userInfos = new ThreadLocal() { protected Object initialValue() { return new Context(); } } public static Context getContext() { return (Context) userInfos.get(); } public static Context initContext() { Context context = new Context(); setContext(context); return context; } }
authentificationBean.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public class Context implements Serializable { private static final long serialVersionUID = 5484238902280571699L; private UtilisateurDto user; private List<HabilitationDto> habilitations; // getter + setter ... }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public class ConnexionBean implements ActionListener, Serializable { public void seConnecter(ActionEvent event) { .... UtilisateurDto userDto = utilisateurService.authentifier(login, password); List<HabilitationDto> habils = habilitationService.chargerListHabilitationByProfil(); context.setUser(userDto); context.setHabilitations(habils); } }
Dao.java (plus tard dans l'application)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ContextUtils.getContext().getHabilitation(); ContextUtils.getContext().getUser(); ..
Partager