-
problème context servlet
Bonjour, j'ai un problème sur une servlet,
j'ai une applet qui communique avec une servlet. Sur l'applet j'ai un JTree que je manipule en ajoutant ou supprimant des nœuds, le problème c'est qu'après avoir fait des modifications, celles-ci sont bien prises en compte au niveau de la BD et au niveau visuel par contre lorsque je rafraichi la page contenant l'applet le JTree reprend l'apparence qu'il avait avant les modifications. Par contre si je redémarre le serveur le JTree a l'apparence qui correspond bien aux modifications.....
Est ce que quelqu'un peut me dire comment faire pour que les modifications soient prises définitivement sans redémarré le serveur (peu être un problème autour du context de la servlet ...)?
-
si t'expliquais déjà comment l'applet recois l'état depuis le serveur?
-
Bonjour,
L'applet ne gère que l'aspect graphique, lorsque j'ajoute un nœud à mon JTree elle demande à la servlet de faire une requête sur la base.
La servlet récupère les données dans la base et les transmet à l'applet sous forme d'objet sérializable, et l'applet gère le côté IHM.
Tout fonctionne normalement tant que je reste sur la page contenant l'applet, si je vais sur une autre page puis que je reviens sur la page de mon applet, les modifications ne se voient pas, par contre la base de données correspond bien aux modifications (ajout ou suppression de nœuds).
Si je relance le serveur ou que le context se recharge les modifications se voient.
-
d'ou ma question initiale: comment l'applet récupère-t-elle ces données?
-
Sous forme d'objet "serializable" que la servlet lui transmet
-
oui mais en pratique, comment ce passe cette tarnsmission, a quel moment l'applet va-t-elle chercher cet objet?. Dans son init()? dans son start()? quand l'utilsateur clique sur un bouton précis?
-
Dans son init au départ, pour charger l'arborescence du JTRee, puis si je modifie le JTree la servlet modifie la BD et renvoi la nouvelle arborescence à l'applet (après un clic sur un bouton)
-
faut
1) voir si la servlet envoie les bonne données à l'applet (faire un dump de ces données à leur réception, par exemple, dans la console java)
2) si c'et pas le cas, envisager que t'as des données polluée en session coté serveur et que si tu l'a pas vu, c'est parce que l'applet ne recharge pas ces données pas après avoir envoyé les données à la db
3) regarder si c'est pas l'applet qui cache ses données initiales (les applets ne sont pas tuées / rechargée par le borwser quand tu change de page. Le browser utilise stop() et start() pour alléger le travail. -> il arrive régulièrment que des gens se plaignent d'applet qui "marchent la première fois puis plus du tout jusqu'à ce qu'on relance le navigateur"