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

Spring Java Discussion :

Question par rapport à un accès concurrentiel [Framework]


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 24
    Par défaut Question par rapport à un accès concurrentiel
    Salut à tous,

    je viens ici poser une petite question qui me trotte par rapport à un accès concurrentiel aux données.

    Je vous explique rapidement mon schéma :

    j'utilise Spring pour un projet, spring-mvc, orm, et tout ce qui va avec. Dans ma conf, je définis un bean "DAO" qui est donc un singleton.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	<bean id="daoImpl" class="projet.services.persistence.DaoImpl"/>
    Dans cette même conf je définis un bean "sessionPref" de scope "session" qui me sert à mémoriser des données étant relatives à ma session.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	<bean id="sessionPref" class="projet.helpers.session.SessionPrefs"
    		scope="session">
    		<aop:scoped-proxy />
    	</bean>
    Ma DAO se sert lorsqu'elle réalise des opérations avec l'ORM, de ce bean "session" pour pouvoir opérer correctement, il lui est injecté en utilisant directement dans la DAO un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	@Autowired
    	private SessionPrefs sessionPref;
    Ma question est la suivante :

    n'y a-t-il pas un risque que les objets "sessionPref" se "mélangent" dans ma DAO si par exemple deux exécutions se déroulent en même temps, quasiment au même moment, sachant que dans ma DAO je n'ai ajouté aucun synchronized sur ce "sessionPref"?

    Je ne sais pas trop comment je pourrai tester ça mais j'ai lu des posts sur le net ou des personnes ont rencontré des problèmes de "données fantômes" dûes à ça, si d'ailleurs vous avez des conseils à ce sujet je suis preneur!

    Merci!!

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    Bonjour,

    LA session HTTP n'est pas Thread Safe. Cela signifie que dans le cas d'accès simultanées en écriture (si c'est bien votre cas), le développeur sera en charge de la synchronisation au risque de comportements non maîtrisés.

    La question qui se pose alors est si on a bien des accès simultanés sur une même session HTTP (sachant qu'une session est associée à un utilisateur unique).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 24
    Par défaut
    Merci de ta réponse vhalalla,

    la session n'est pas ThreadSafe mais, dans un controlleur au sein d'un containeur Spring, annoté par le "@Controller", la manipulation des sessions est bien threadsafe non?

    Car le seul endroit ou je manipule mon bean de scope "session" pour y écrire des valeurs, c'est dans les méthodes d'un controlleur. Je ne fais que lire des valeurs dans la DAO, et j'avoue que la problématique de la DAO en singleton m'a un peu interpellé concernant la concurrence, vu que je ne sais pas trop comment tester que tout se passe bien surtout...

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    Citation Envoyé par Yoann.chambonnet Voir le message
    Merci de ta réponse vhalalla,

    la session n'est pas ThreadSafe mais, dans un controlleur au sein d'un containeur Spring, annoté par le "@Controller", la manipulation des sessions est bien threadsafe non?
    Techniquement non, elle n'est pas threadsafe Après si vous êtes sur qu'un même utilisateur ne requête jamais votre contoller de façon concurrente y a pas de soucis.
    Par contre j'imagine qu'avec une appli web qui utilise de l'AJAX pour récupérer des valeurs pendant que l'utilisateur fait lui même ses propres interactions sur la page on peut potentiellement commencer à avoir des résultats bizarres . Même chose si l'appli utilise des Frames.
    En fait, dés qu'il peut y avoir plusieurs requêtes simultanées vers le serveur pour le même utilisateur, il faut penser à synchroniser l'accès à sa session (ce que très peu de développeurs font)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 24
    Par défaut
    Très bien, enregistré, merci beaucoup des conseils vhalalla!

    Je vais regarder un peu mieux et me rédiger des tests pour mettre en évidence ça.

    Je laisse le post ouvert pour un petit moment si quelqu'un a des précisions à apporter.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    Pas de pb

    J'ai trouvé le lien suivant (en anglais) qui traite du pb. C'est intéressant!!

    http://www.ibm.com/developerworks/li...-jtp09238.html

    L'introduction dit: "The result is that many stateful Web applications have subtle and serious flaws"

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

Discussions similaires

  1. Question par rapport aux User stories
    Par ErEcTuS dans le forum Méthodes Agiles
    Réponses: 3
    Dernier message: 03/05/2010, 01h44
  2. Bcp de questions par rapport à Samba
    Par donkeyquote dans le forum Réseau
    Réponses: 0
    Dernier message: 11/03/2008, 14h53
  3. Quelques petites questions par rapport aux textures
    Par kev42100 dans le forum Développement 2D, 3D et Jeux
    Réponses: 8
    Dernier message: 21/02/2008, 21h37
  4. [Configuration] question par rapport aux chemins
    Par Death83 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 16
    Dernier message: 11/12/2006, 10h24
  5. [XHTML] XHTML: plusieur question par rapport au html
    Par pierrot10 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 30/08/2006, 08h50

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