Bonjour à tous,
Je rencontre actuellement un problème d'accès concurrents sur mon application Web. Je programme un jeu et je voudrais faire en sorte que l'utilisateur ne puisse pas faire de nouvelle requete avant que la courrante soit terminée. Est-ce possible?
Voilà typiquement le problème que je rencontre actuellement: le joueur possède un certain nombre de points d'actions. Lorsqu'il veut effectuer une action mon programme effectue un traitement du style:
Le problème est qu'il arrive que le joueur, clique 2 fois rapidement et effectue 2 fois l'action avec 1 seul point:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 if (joueur.getPointsAction() > 0) { // effectue action .... joueur.setPointsAction(pointsAction -1); }
Evidemment je ne veux pas que ça arrive. Je pourrais tout mettre en synchronized, mais ça signifie que 2 joueurs completement différents ne peuvent pas lancer d'action en même temps, alors que ça n'a pas d'impact.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 le joueur avec 1 point clique, on est au point bleu le joueur reclique rapidement, on repart au point bleu, il a toujours 1 point l'action est effectuée, le joueur a 0 point (point rouge) l'action est effectuée une deuxième fois, le joueur a 0 points (encore)
Du coup est-ce que je peux bloquer ça, par la config de Tomcat par exemple?
Pour info, j'utilise Spring, Acegi et iBatis comme frameworks
Merci d'avance
Partager