-
Sessions Java Web Start
Bonjour à tous.
Dans l'appli Java Web Start que je déploie sur mon intranet, chaque utilisateur pourra effectuer des opérations de mise à jour sur une base de données.
Quel moyen me suggérez-vous pour empêcher que plusieurs utilisateurs ne lancent une requête de mise à jour en même temps ?
Dans l'idéal, je voudrais que les autres utilisateurs soient avertis et leur demande de mise à jour bloquée dès que l'un d'eux sollicite la base de données.
Pour cela, est-il possible que des sessions différentes d'une même appli JWS communiquent entre elles ?
Merci pour vos idées.
-
Les bases de données sont faites pour gérer ce genre de cas. A ta place je ferais en sorte que la mise à jour soit faite en:
1) commençant une transaction
2) obtenant un lock (table, ligne de table pertinente pour ta donnée, c'est selon tes besoins)
3) modifiant
4) exécutant commit + relâchement du lock
Les détails dépendent de ton SGBD...
-
Merci Therwald.
Oui, je sais que tout bon SGBD gère les accès concurrentiels mais en supposant que je veuille déléguer ce contrôle à mon appli, comment faire dialoguer des sessions d'une même appli JWS ?
La question m'intéresse même en dehors d'une problématique SGBD.
-
Je ne connais pas de méthodes spécifiques à JWS (ceci dit je ne suis pas un expert de JWS non plus). A mon avis tu n'aurais d'autre choix que d'ouvrir des connections réseau vers un serveur (ou établir un réseau p2p, ça suppose au moins un serveur annuaire pour trouver les autres instances je crois) pour échanger des données sur les opérations en cours. J'ai déjà fait ça en local pour coordonner des process (éviter qu'un traitement non fini ne se fasse "marcher sur les pieds" dans le cadre de mises à jour programmées par scheduler). En multiposte tu auras potentiellement à résoudre des problèmes de routage / firewall...