IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

thread local problème


Sujet :

Java

  1. #1
    Membre confirmé Avatar de nadsky
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 118
    Par défaut thread local problème
    Bonsoir à tous,

    Je dois écrire une classe contenant elle-même une classe interne.
    En fait, cette classe englobante a pour attributs des informations (profil, email...) concernant des utilisateurs.
    On me demande de créer une classe interne intitulée SecurityManager qui a pour seul attribut un thread local, destiné à stocker les informations sur les utilisateurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	private static ThreadLocal infosUser = new ThreadLocal();
    //variable dans laquelle on va stocker les infos utilisateurs
    Or, j'ai lu de nombreux tutos sur le net indiquant qu'il faut écrire trois méthodes lorsqu'on se sert d'un thread local :
    protected Object initialValue()
    public Object get()
    public void set(Object value)

    à quoi servent ces méthodes?
    Doit-on transtyper l'Object dans le type de la classe englobante?

    Pouvez-vous m'aider svp??
    merci d'avance,

    Nadsky

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Par défaut
    Or, j'ai lu de nombreux tutos sur le net indiquant qu'il faut écrire trois méthodes lorsqu'on se sert d'un thread local :
    protected Object initialValue()
    public Object get()
    public void set(Object value)
    J'ai l'impression que se sont les mots "il faut" qui te perturbe. Ce n'est pas une obligation mais plutôt un conseil de bonne pratique, de la même manière que l'on conseille fortement l'utilisation de setter/getter pour l'accès aux propriétés d'un objet

    à quoi servent ces méthodes?
    Doit-on transtyper l'Object dans le type de la classe englobante?
    ba justement, ce sont les setter et getter pour manipuler les données contenues dans ton LocalThread. En ce qui concerne la méthode initialValue, elle a pour objectif de supprimer la référence de ton objet dans ton LocalThread (quand ton utilisateur se déconnecte par exemple).

    Ce qu'il faut retenir de ça : mets les propriétés de ta classe en private, et met à disposition les méthodes adéquates pour accéder et/ou manipuler ces attributs de l'extérieur.

  3. #3
    Membre confirmé Avatar de nadsky
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 118
    Par défaut
    finalement, j'ai préféré créer une classe SecuriteFonctionnelle contenant seulement le thread local et les méthodes (getter, setter et remove) et ne pas la mettre en classe interne.
    Quant à l'autre classe,intitulée InfosUserFonctionnelle, elle contient toujours les informations concernant les utilisateurs (nom, prénom, profil, email...).
    Voici les getter et setter de ma classe contenant le thread local :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public InfosUtilisateurFonctionnel getInfosUser(){
    	return (InfosUtilisateurFonctionnel)infosUser.get();
    }
    public void setInfosUser(InfosUtilisateurFonctionnel inf){
    	infosUser.set(inf);
    }

    L'appli sur laquelle je suis est séparée en couches : présentation, métier, etc...et utilise Struts.il y-a donc des classes Action dans la couche présentation liées aux classes services de la couche métier.
    Pour le moment, on passe en paramètre des méthodes de services de la couche métier certaines informations concernant les utilisateurs, et ces méthodes de services sont appelées dans les classes action de la couche présentation, et cela semble assez intrusif.

    Mes question sont les suivantes:
    . Comment sont appelées les méthodes de ma classe contenant le thread local dans mes classes action et mes méthodes de la classe service??

    . Que doit contenir la méthode remove?

    Pouvez-vous m'aider,svp??

    Merci d'avance

    Nadsky

  4. #4
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Bonjour,

    Tout d'abord tes methodes de ta classe doivent etre en static, ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class InfosUtilisateurFonctionnel () {
     
        private static ThreadLocal infosUser = new ThreadLocal();
     
        public static InfosUtilisateurFonctionnel getInfosUser(){
    	return (InfosUtilisateurFonctionnel)infosUser.get();
        }
     
        public static void setInfosUser(InfosUtilisateurFonctionnel inf){
    	infosUser.set(inf);
        }
    }
    La question apres est quand appeler le setInfosUser pour mettre a jour la ThreadLocal? Tu es en Struts donc dans un contxte WEB, tu peux allez voir ce post

    Comme tu verras dans ce post on parle de filter mais comme tu es en Struts, tu peux mettre a jour InfosUtilisateurFonctionnel dan sla method eprocess du RequestProcessor de Struts qu'il faut surcharger.

    Donc en gros il faut que tu stocke en session HTTP une instance InfosUtilisateurFonctionnel , puis dans la methode process du RequestProcessor, tu recuperes l'instance InfosUtilisateurFonctionnel de la session et tu mets a jour la ThreadLocal avec l'isntance mise en session InfosUtilisateurFonctionnel en appelant la methode setInfosUser.

    Apres dans toutes tes couches, tu pourras faire InfosUtilisateurFonctionnel .getInfosUser() et recuperer l'instance InfosUtilisateurFonctionnel dont tu as besoin.

    Angelo

  5. #5
    Membre confirmé Avatar de nadsky
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 118
    Par défaut
    Bonjour azerr, je te remercie de m'avoir répondu si rapidement,

    étant plus que débutante en struts (en effet, l'application était déja bien développée à mon arrivée), j'e n'ai pas bien saisi ce que tu as écrit :
    Citation Envoyé par azerr Voir le message

    Donc en gros il faut que tu stocke en session HTTP une instance InfosUtilisateurFonctionnel , puis dans la methode process du RequestProcessor, tu recuperes l'instance InfosUtilisateurFonctionnel de la session et tu mets a jour la ThreadLocal avec l'isntance mise en session InfosUtilisateurFonctionnel en appelant la methode setInfosUser.
    Pourrais -tu le reformuler,stp??

    Merci d'avance
    Nadsky

  6. #6
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Je suppose que InfosUtilisateurFonctionnel est une instance qui vient d'un service d'authenfication (ou autres)?

    Il faut que cette instance soit stocke dans la session HTTP (peut etre qu'elle l'est deja).

    Apres il faut que tu regardes si dans ton application tu as surcharge le request processor de Struts. Si ca n'est pas fait il faut le surcharger (voir doc Struts) et surcharger la methode process du RequestProcessor.

    J'aivais fait ca cela dans mon projet GestCV peut etre que ca pourra t'aider.

    Angelo

  7. #7
    Membre confirmé Avatar de nadsky
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 118
    Par défaut
    Bonjour,

    en fait la classe où le thread local est déclaré est la classe SecuriteFonctionnelle, InfosUtilisateurFonctionnel est la classe contenant les attributs d'information sur les utilsateurs (nom, prénom, email, profil...).

    Ces deux classes sont des classes métier.
    Je ne sais donc pas ce qui doit être stocké en session http

    Peux-tu m'aider stp?
    Merci d'avance,

    Nadsky

  8. #8
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Bonjour,

    C'est un peu difficile de t'aider en ne voyant pas les classes et methodes. C'est InfosUtilisateurFonctionnel qui doit etre stocke en session, car c'est cette instance que tu veux utiliser. Je reprends l'exemple que j'avais explique dans le post que je t'avais dit de lire (stp prends le temps de lire et comprendre) et je tente de l'adapter a ton cas :
    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
     
    InfosUtilisateurFonctionnel user = (InfosUtilisateurFonctionnel)session.getAttribute("user");	
    if (user != null) {
        // Le user s'est conncete prealablement, maj de la ThreadLocal
          SecuriteFonctionnelle.setInfosUser(user);
    }
    else {
      // Récuperation du UserPrincipal instancié par le mecanisme std
       java.security.Principal principal = request.getUserPrincipal();
       String userName = principal.getName();
     
       // Appel du service d'authentification
       user = SecuriteFonctionnelle.login(userName);
       // Mise a jour la session HTTP + ThreadLocal
       session.setAttribute("user",user);	
       SecuriteFonctionnelle.setInfosUser(user);
    }
    Et ce code il faut que tu le mettes dans la methode process du RequestProcessor (voir GestCV ou Doc Struts)

    Angelo

  9. #9
    Membre confirmé Avatar de nadsky
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 118
    Par défaut
    si je comprends bien, il faut intégrer ce code dans le request processor, mais on peut faire un SecuriteFonctionnelle.setInfosUser(InfosUtilisateurFonctionnel) dasn les actions de la couche présentation et faire des get dans les services de la classe métier.

    Le thread local et les méthodes de SecuriteFonctionnelleManager étant déclées statiques, on ne les instancie pas.
    Mais où doit-on instancier (avec new) la classe InfosUtilisateurFonctionnel??

    Merci d'avance,

    Nadsky

  10. #10
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    si je comprends bien, il faut intégrer ce code dans le request processor,
    C'est ca.

    mais on peut faire un SecuriteFonctionnelle.setInfosUser(InfosUtilisateurFonctionnel) dasn les actions de la couche présentation et faire des get dans les services de la classe métier.
    Tu peux faire aussi comme ca, mais c'est plus prrpre de la faire dans le RequestProcessor car c'est le point d'entree de Struts. A chaque fois que tu appelle une url de type *.do, le RequestProcessor est appele avant l'appel de l'action Struts. C'est lui qui s'occupe de populer les formulaires et d'appeler la bonne action Struts. Ca ne sert a rien d'appeler l'action si l'utilisateur n'est pas authentifie, d'ou mettre le code d'authentification dans le RequestProcessor.

    Il suffit que tu crees une Action qui n'herites pas de ta classe Action de base qui gere l'authentification et la tu aurras des problemes. En mettant le code dans le RequestProcessor tu es sur que ta ThreadLocal sera mise a jour quelque soit la classe Action Struts utilise.
    Le thread local et les méthodes de SecuriteFonctionnelleManager étant déclées statiques, on ne les instancie pas.
    C'est ca. La ThreadLocal elle s'attache a la Thread courante (des que tu appelles uen URL ca instancie ou recupere une Thread dans le pooling de Thread du serveur).

    Mais où doit-on instancier (avec new) la classe InfosUtilisateurFonctionnel??
    C'est ou tu veux, dans mon exemple je l'ai mis dans la methode login de ta classe d'autentification :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     // Appel du service d'authentification
       user = SecuriteFonctionnelle.login(userName);
    Angelo

  11. #11
    Membre confirmé Avatar de nadsky
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 118
    Par défaut
    Je te remercie vraiment de tes réponses très claires
    J'ai demandé aux développeurs de l'appli où se trouvait le RequestProcessor (en effet, l'appli a été bien développée avant mon arrivée), et ils ne savent pas de quoi il s'agit
    J'ai exploré Eclipse et je ne le trouve pas non plus.

    Un des développeurs m'a suggéré de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SecuriteFonctionnelle.set(InfosUtilisateurFonctionnel) dans les classes action
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SecuriteFonctionnelle.get(), cette méthode renvoyant un InfosUtilisateurFonctionnel
    dans les méthodes des services métier.

    Nadsky

  12. #12
    Membre confirmé Avatar de nadsky
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 118
    Par défaut
    J'ai un doute concernant l'instanciation de InfosUtilisateurFonctionnel.

    Voici le code tel qu'il était avant tout modification :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    public ActionForward doExecute(ActionMapping mapping,
    			AbstractActionForm form, HttpServletRequest request,
    			HttpSession session, HttpServletResponse response, String sousAction)
    			throws TechniqueException, RegleGestionException {
    		
    		SaisieDecisionHabilitationForm saisieDecisionHabilitationForm = (SaisieDecisionHabilitationForm) form;
    		
    		ActionMessages messages = new ActionMessages();
    		
    		IHabilitationService habilitationService = ServiceFactory.getInstance().getHabilitationService();
    		
    		CezarInfosUtilisateur infosUtilisateur = CezarSecuriteManager.getInstance().getInfoUtilisateur(request);
    		Integer autoriteUtilisateurId = infosUtilisateur.getEntiteAppartenance().getId();
    		String loginAutorite = infosUtilisateur.getEmail();
    
    		
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    123
    CezarInfosUtilisateurFonctionnel inf = new CezarInfosUtilisateurFonctionnel();
     
    		CezarSecuriteFonctionnelleManager.setInfosUser(inf);
    Integer habilitationId = saisieDecisionHabilitationForm.getId(); Integer habilitationVersion = saisieDecisionHabilitationForm.getVersion(); Integer typeDecisionId = new Integer(saisieDecisionHabilitationForm.getTypeDecisionId()); ScalarDecision scalarDecision = new ScalarDecision(); BeanUtils.copyProperties(scalarDecision, saisieDecisionHabilitationForm.getSaisieDecisionForm()); ActionForward aForward = mapping.findForward("decision_ko"); try { habilitationService.enregistrerDecisionHabilitation( habilitationId, typeDecisionId, habilitationVersion, scalarDecision); autoriteUtilisateurId, loginAutorite); String messageHautEcran = "habilitation.instruction.ok" ; if (typeDecisionId.equals(Integer.parseInt(Constantes.DATA_TYPE_DECISION_ID_ACCORD))) { messageHautEcran = "habilitation.accord.ok" ; } else { if (typeDecisionId.equals(Integer.parseInt(Constantes.DATA_TYPE_DECISION_ID_REFUS))) { messageHautEcran = "habilitation.refus.ok" ; } } messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(messageHautEcran)); this.saveMessages(session , messages); aForward = mapping.findForward("decision_ok"); } catch (AccessForbiddenException afe) { return new ActionForward("/erreur403.do"); } catch (RegleGestionException rge) { messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("habilitation.decision.rg.ko", rge.getLocalizedMessage())); this.saveErrors(session , messages); return mapping.findForward("decision_rg_ko"); } catch (ServiceException se) { messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("habilitation.decision.ko", habilitationId)); this.saveErrors(session , messages); return mapping.findForward("decision_ko"); } ActionForward newForward = new ActionForward (aForward.getPath() + "?id=" + habilitationId.toString() + "&tab=decision"); newForward.setRedirect(true); return newForward; } }
    en fait, on passait en paramètre de la méthode du service métier enregistrerDecisionHabilitation les paramètres autoriteId et loginAutorite qu'on avait déclaré plus haut, dans la classe action.
    On me demande de stocker les informations utilisateur dans un thread (comme je l'ai fait précédemment),j'ai mis entre les balises ce que je pense faire, je ne sais pas si c'est correct.
    Devrais-je instancier à chaque fois la classe InfosUtilisateurFonctionnel pour chaque classe action??

    Pouvez-vous m'aider,svp??

    Merci d'avance
    Nadsky

  13. #13
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Je pense que je t'ai donne toutes les informations necessaires pour que tu puisses te debrouiller. Prends le temps de comprendre ce que je t'ai dit. Je ne peux pas me permettre de passer autant de temps sur ton probleme.

    Tu n'as pas un responsable technique qui puisse t'aider, parce que t'affecter a une tache aussi delicate que la securite pour un debutant, ca me parait vraiment bizarre que l'on t'ai affecte a cette tache.

    Bon courage

    Angelo

  14. #14
    Membre confirmé Avatar de nadsky
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 118
    Par défaut
    Merci beaucoup pour ton aide et tes pistes, Angelo

    C'est vrai que je juge cette tache assez difficile pour une étudiante de fin de deuxième année de dut... d'autant plus que je connais que très mal le framework Struts...
    Je vais voir ce que je peux faire...

    Merci pour tout

    Nadsky

  15. #15
    Membre confirmé Avatar de nadsky
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 118
    Par défaut
    Bonjour à tous,

    Je m'excuse d'"insister" avec mon problème, mais je rencontre beaucoup de difficultés pour réaliser mon projet (d'autant plus qu'il s'agit d'un sujet de stage )

    Bien que les réponses données plus tôt soient très claires, je dois utiliser les getter (dans les méthodes services de la couche métier) et setter (dans les classes action de la couche présentation) de ma classe contenant mon thread local : la classe CezarSecuriteFonctionnelleManager.
    ( je n'ai pas mis le nom complet de mes méthodes dans mes posts précédents, pour que ce soit plus "lisible", je les remet ici pour que ce soit cohérent avec mon extrait de code)
    Or, dans les classes action de la couche présentation, je dois utiliser le setter de cette classe SecuriteFonctionnelle.
    Mais je ne sais pas si je dois instancier ma classe contenant des informations utilisateur CezarInfosUtilisateurFonctionnel de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CezarInfosUtilisateurFonctionnel inf = new CezarInfosUtilisateurFonctionnel();
     
    		CezarSecuriteFonctionnelleManager.setInfosUser(inf);
    pour chaque classe action de la couche présentation, ou une seule fois (où?) et que j'appellerai ensuite.

    Pouvez-vous m'aider, svp???

    Merci d'avance

  16. #16
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Bonjour,

    Il est impossible de te repondre car la classe CezarInfosUtilisateurFonctionnel est uen classe metier de ton application et on ne sait pas comment elle est geree?

    Dans le code que tu as mis tu as apperement une methode getInfoUtilisateur qui attend une request HttpServletRequest :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CezarSecuriteManager.getInstance().getInfoUtilisateur(request)
    Regarde le code de getInfoUtilisateur mais je pense que ca doit etre dans cette methode que l'authentification s'effectue (CezarInfosUtilisateurFonctionnel est instanciee et l'instance CezarInfosUtilisateurFonctionnel est peut etre stocke en session?)

    Tout ca pour dire, qu'au lieu de faire comme j'avais suppose)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     // Appel du service d'authentification
       user = SecuriteFonctionnelle.login(userName);
    il faut peut etre faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    user = CezarSecuriteManager.getInstance().getInfoUtilisateur(request)
    S'il te plait fais toi aider par des personnes de ton entourage, parce que c'est impossible de t'aider, ne connaissant pas le metier de ton application.

    Angelo

  17. #17
    Membre confirmé Avatar de nadsky
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 118
    Par défaut problème d'instanciation
    Bonjour à tous!!!

    Je vais voir comment je vais me débrouiller pour ce qui est de la méthode process du request processor et de ce qui concerne l'authentification...

    Par contre, est-ce que quelqu'un aurait une idée pour ma question concernant l'appel au setter dans la méthode doExecute de ma couche Présentation??
    ( je sais que j'insiste...)
    Est-ce que je dois à chaque doExecute de chaque méthode Action de ma couche Présentation, instancier un nouveau CezarInfosUtilisateurFonctionnel de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CezarInfosUtilisateurFonctionnel inf = new CezarInfosUtilisateurFonctionnel();
     
    		CezarSecuriteFonctionnelleManager.setInfosUser(inf);
    ou le déclarer une seule fois quelque part, (où?) et le référencer ensuite??

    Merci à tous ceux qui tenteront de m'aider,

Discussions similaires

  1. Développement Web: Thread local
    Par ghiwani80 dans le forum JSF
    Réponses: 4
    Dernier message: 05/12/2011, 11h44
  2. threads: local directory
    Par Adakite dans le forum Langage
    Réponses: 1
    Dernier message: 16/06/2010, 22h19
  3. [Réseaux local] Problème de connexion
    Par ttone dans le forum Hardware
    Réponses: 1
    Dernier message: 15/08/2008, 21h52
  4. [Conception] Thread local
    Par smutmutant2003 dans le forum Concurrence et multi-thread
    Réponses: 8
    Dernier message: 29/01/2007, 21h04
  5. [Thread][socket]Problème de fermeture d'un thread
    Par meda dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 04/11/2004, 01h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo