[JAVA EE] Sessions simultanées
Fermé
TempsMort0
Messages postés
43
Date d'inscription
mardi 22 janvier 2013
Statut
Membre
Dernière intervention
1 août 2018
-
25 juin 2018 à 16:57
KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 - 25 juin 2018 à 18:44
KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 - 25 juin 2018 à 18:44
A voir également:
- [JAVA EE] Sessions simultanées
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java décompiler - Télécharger - Langages
1 réponse
KX
Messages postés
16760
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
25 juin 2018 à 18:44
25 juin 2018 à 18:44
Bonjour,
Il y a plusieurs manières de faire, certaines sont meilleures, d'autres sont plus simples, mais il n'y a jamais de solutions parfaites, le plus important c'est que ça fonctionne.
Je te propose de créer une classe de service, dont tu exposeras un singleton partagé par toutes tes sessions.
À chaque fois que tu veux faire une lecture ou une écriture (peu importe quel user c'est) tu passes par ce singleton et c'est cette classe de service qui se chargera de lire ou modifier le fichier.
Maintenant il faut jouer avec la synchronisation. Deux possibilités :
Bonnes pratiques :
Il y a plusieurs manières de faire, certaines sont meilleures, d'autres sont plus simples, mais il n'y a jamais de solutions parfaites, le plus important c'est que ça fonctionne.
Je te propose de créer une classe de service, dont tu exposeras un singleton partagé par toutes tes sessions.
À chaque fois que tu veux faire une lecture ou une écriture (peu importe quel user c'est) tu passes par ce singleton et c'est cette classe de service qui se chargera de lire ou modifier le fichier.
Maintenant il faut jouer avec la synchronisation. Deux possibilités :
- La plus simple : dès qu'un thread est dans une méthode (lecture ou écriture) tu fais patienter tous les autres thread qui souhaiteraient rentrer dans une autre méthode (lecture ou écriture) du service.
- La plus souple : dès qu'un thread est dans une méthode de lecture, tu fais patienter uniquement les threads qui souhaitent faire de l'écriture. Et si ton thread est dans une méthode d'écriture tu fais patienter tous les autres thread qui souhaiteraient rentrer dans une autre méthode.
Bonnes pratiques :
- Un thread en écriture devrait être prioritaire par rapport à un thread en lecture.
- Chaque modification devrait être la plus petite possible (lire/modifier une case plutôt que tout le fichier)
- Le service qui gère les données n'est pas obligé d'écrire dans le fichier à chaque fois qu'il y a une modification, il peut manipuler un cache et persister le fichier après plusieurs modifications (éventuellement ajouter une méthode flush qui forcerait l'écriture).