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

Développement Web en Java Discussion :

[Stratégie] Stockage de données par utilisateur (mais pas en HttpSession)


Sujet :

Développement Web en Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Par défaut [Stratégie] Stockage de données par utilisateur (mais pas en HttpSession)
    Bonjour à tous,

    Alors j'ai un problème tout con, mais ça me prend la tête depuis pas mal d'heures

    J'ai développé un service qui me construit une session Hibernate, mais j'ai besoin de récupérer une donnée de l'utilisateur connecté pour savoir quelle session construire.

    Le truc c'est que ce service est une classe Java basique, et qu'il n'a donc pas accès à la HttpSession.

    Comment je pourrais stocker une donnée (une String tout con) relative à l'utilisateur courant (son id par ex) lorsqu'il se loggue, que je pourrais récupérer dans mon service ?

    J'ai regardé du coté des Context, des ThreadLocal, mais je patauge et rien de ce que j'ai fait ne fonctionne.

    Merci pour votre aide.

  2. #2
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Tu peux effectivement jouer avec des ThreadLocal ... L'idée d'un ThreadLocal c'est que chaque Thread a sa variable a lui d'une certaine manière. Ton Thread peut donc lors du doGet (ou autre selon le framework utilisé) stocker cette valeur dans un ThreadLocal déclaré en static et après récupérer cette valeur dans ton autre classe ...

    Cependant, je trouve cela un peu "bidouille" ... Pourquoi ne pas passer ce paramètre tout le long des appels ?

  3. #3
    Membre expérimenté Avatar de coco62
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 237
    Par défaut
    Le Thread local fonctionne mais il est uniquement OK pendant une requête.
    Lors d'un autre appel, tu ne sera pas forcement sur le même Thread.

  4. #4
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Exact ! Cette solution implique donc que tu reçoives l'info de quel utilisateur il s'agit à chaque requête http ...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Par défaut
    Oui ça ne fonctionne pas bien ThreadLocal, car je ne suis pas sur le même thread tout au long d'une navigation utilisateur.

    Comment je peux faire alors pour stocker cette donnée ? (et la passer tout le temps en paramètre est impossible, trop moche à coder, pas maintenable, évolutif, ...)

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Si tu appelles ton service de ta couche web (qui a accès à la session http), passe lui en paramètre ton utilisateur.

  7. #7
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Ben c'est ce que je lui disais ...
    Sinon autre solution c'est que tu mets ta Session dans un ThreadLocal à chaque requête ...

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Par défaut
    J'ai fait un Filter (Interceptor avec Struts 2) qui met à jour mon ThreadLocal avec mes données qui sont en HttpSession.

    Merci pour vos réponses

  9. #9
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Bonne idée le Filter je n'y avais pas pensé ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 13/05/2008, 02h59
  2. Données en base mais pas dans les états!
    Par sofien dans le forum Reports
    Réponses: 4
    Dernier message: 12/12/2007, 10h44
  3. [getElementById] Id reconnu par CSS mais pas par getElementById
    Par Hibou57 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/07/2007, 08h47
  4. prompt interprété par firefox mais pas par IE
    Par calitom dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 06/02/2007, 17h58
  5. Réponses: 1
    Dernier message: 03/12/2005, 12h24

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