afficher dans jsp toutes les autres jsp génerées par l'appli
Le
thisislife
bonjour à tous,
dans le contexte d'une application devant pouvoir gérer plusieurs
centaines d'utilisateurs, je cherche à ce que [b]quand un utilisateur
effectue une action dans une jsp, celle-ci fasse recharger
immédiatement certaines pages spécifiques[/b] affichées par d'autres
utilisateurs
par exemple, il y a 10 utilisateurs dans l'appli. vous cliquez sur un
bouton dans votre page, et les 3 autres utilisateurs concernés voient
immédiatement leurs pages mises à jour avec la modif que vous avez
faite alors que les 7 autres utilisateurs gardent leur page inchangée.
le but est qu'il n'y ait que quatre connexions à la base, une pour
chacune de ces pages modifiées, au lieu d'une dizaine si chaque page
doit vérifier régulièrement si ses données ont été changées
pour tester ca, je voudrais parvenir à afficher dans une jsp toutes
les autres jsp en cours d'affichage générées par cette application
ainsi, s'il y a 4 personnes qui vont sur cette page au même moment
(session non expirée), ou sur d'autres pages de cette appli test, elle
devra afficher qu'il y a 4 pages
l'étape suivante sera de parvenir à faire recharger les autres pages
affichées à partir de celle-ci
évidemment il faut arriver à faire cela avec un minimum de conso
serveur ^^
les solutions que je vois :
[b]1) base de données[/b]. solution classique. pour rester un minimum
réactif, cela implique que
>> toutes les pages se rechargent régulièrement pour savoir si leur aff=
ichage doit changer, ce qui est idiot puisque la page sera rechargée mê=
me si l'affichage n'a pas besoin d'être mis à jour.
>> chaque page lance une petite thread vérifiant régulièrement si les=
données la concernant ont été modifiées. si oui, elle recharge la =
page.
>>>> entraine un gaspillage de ressources serveur et de connexions bd éno=
rme (si chaque page lance une thread ou se recharge toutes les secondes)
2) parvenir, à partir d'une page, à [b]accéder aux autres pages
crées par le serveur pour les autres utilisateurs[/b]
dans ce cas, il "suffit" de ne faire recharger que les pages
concernées par la modif. et celles-ci ne se connecteront à la base
que si elles en ont besoin.
mais comment une page peut être accéder aux autres pages générées
par l'application ?
>> par la session ? il y avait un HttpSessionContext bien utile, mais visib=
lement supprimé
>> par des streams ?
>> ouvrir des sockets entre les pages ? ce qui implique de développer un =
véritable mécanisme serveur/clients un peu lourd quand même dans c=
e cas je vois pas l'intéret de faire du dev internet :(
>> par les fichiers physiques générés sur le serveur, mais ca ne perm=
et pas de communiquer avec elles, juste de savoir qu'elles existent et év=
entuellement de les supprimer (bonjour les effets de bord en perspective ^^)
>> ???
bref, si vous avez des idées elles sont les bienvenues ! ^^
cordialement
David
dans le contexte d'une application devant pouvoir gérer plusieurs
centaines d'utilisateurs, je cherche à ce que [b]quand un utilisateur
effectue une action dans une jsp, celle-ci fasse recharger
immédiatement certaines pages spécifiques[/b] affichées par d'autres
utilisateurs
par exemple, il y a 10 utilisateurs dans l'appli. vous cliquez sur un
bouton dans votre page, et les 3 autres utilisateurs concernés voient
immédiatement leurs pages mises à jour avec la modif que vous avez
faite alors que les 7 autres utilisateurs gardent leur page inchangée.
le but est qu'il n'y ait que quatre connexions à la base, une pour
chacune de ces pages modifiées, au lieu d'une dizaine si chaque page
doit vérifier régulièrement si ses données ont été changées
pour tester ca, je voudrais parvenir à afficher dans une jsp toutes
les autres jsp en cours d'affichage générées par cette application
ainsi, s'il y a 4 personnes qui vont sur cette page au même moment
(session non expirée), ou sur d'autres pages de cette appli test, elle
devra afficher qu'il y a 4 pages
l'étape suivante sera de parvenir à faire recharger les autres pages
affichées à partir de celle-ci
évidemment il faut arriver à faire cela avec un minimum de conso
serveur ^^
les solutions que je vois :
[b]1) base de données[/b]. solution classique. pour rester un minimum
réactif, cela implique que
>> toutes les pages se rechargent régulièrement pour savoir si leur aff=
ichage doit changer, ce qui est idiot puisque la page sera rechargée mê=
me si l'affichage n'a pas besoin d'être mis à jour.
>> chaque page lance une petite thread vérifiant régulièrement si les=
données la concernant ont été modifiées. si oui, elle recharge la =
page.
>>>> entraine un gaspillage de ressources serveur et de connexions bd éno=
rme (si chaque page lance une thread ou se recharge toutes les secondes)
2) parvenir, à partir d'une page, à [b]accéder aux autres pages
crées par le serveur pour les autres utilisateurs[/b]
dans ce cas, il "suffit" de ne faire recharger que les pages
concernées par la modif. et celles-ci ne se connecteront à la base
que si elles en ont besoin.
mais comment une page peut être accéder aux autres pages générées
par l'application ?
>> par la session ? il y avait un HttpSessionContext bien utile, mais visib=
lement supprimé
>> par des streams ?
>> ouvrir des sockets entre les pages ? ce qui implique de développer un =
véritable mécanisme serveur/clients un peu lourd quand même dans c=
e cas je vois pas l'intéret de faire du dev internet :(
>> par les fichiers physiques générés sur le serveur, mais ca ne perm=
et pas de communiquer avec elles, juste de savoir qu'elles existent et év=
entuellement de les supprimer (bonjour les effets de bord en perspective ^^)
>> ???
bref, si vous avez des idées elles sont les bienvenues ! ^^
cordialement
David

Poser une question


Heu si au lieu de mettre ton code JDBC dans tes JSPs tu utilises une
couche DAO, couplé a une pool de connection, a mon avis t'as pas besoin
de te faire chier. D'autant plus si tu rajoutes une gestion des
transactions...
Bon apres c'est vrai que suivant les cas ca ne resoudra pas toujours tes
souci...
Une autre possibilité est de passer par des evenements peut etre. Mais
en statique je vois pas trop. Regarde du coté des technologies AJAX.
Google fais des trucs sympa AJAX.
de ton serveur.
Ensuite, si t'as bcp de requetes indentiques a la BDD, tu peux mettre en
place un cache
Ma proposition "old school" (sans Ajax) : le multiframe : une frame se
resoumet toutes les n secondes. Si la page a besoin d'etre rechargee,
elle declenche un javascript de rechargement de la page principale.
La meme "high tech" : toutes les n secondes, tu fais une requete par
Javascript qui te remonte l'etat de ta page (a jour, ou pas), et suivant
le resultat, la page se rafraichit ou ne fait rien