[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 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 25 juin 2018 à 18:44
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 25 juin 2018 à 18:44
A voir également:
- [JAVA EE] Sessions simultanées
- Waptrick java football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Jeux java itel football - Télécharger - Jeux vidéo
- Jeux java itel 5360 ✓ - Forum Mobile
- Java jre - Télécharger - Langages
1 réponse
KX
Messages postés
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
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).