Bonjour à tous,
Je commence à être un peu à court d'idée, donc je viens chercher des lumières chez les experts. Je travaille sur une grosse application Java EE (Struts) sur un serveur d'application Oracle AS (plutôt vieillot).
Aujourd'hui j'ai un problème, un objet que je stocke en session pour le recharger ensuite sur une autre page ne "revient pas" avec les mêmes données.
Sur Firefox par contre le fonctionnement est correct. Je reste très perplexe quant au comportement de l'application car j'ai du mal à voir ce que le navigateur vient faire au niveau des sessions (je sais que chacun a sa mécanique de gestion de la récupération de session mais enfin...).
J'ai tenté de débugger mon application sur Eclipse/Tomcat, et là, je vois ceci :
Côté Firefox lors de l'appel à
session.setAttribute("monobjet",monform);
La référence indiquée est :
fr.projet.ObjetForm@1a0e2d1[.....]
Sur la page suivante lorsque je recharge :
ObjetForm monform = session.getAttribute("monobjet");
La référence indiquée est :
fr.projet.ObjetForm@1a0e2d1[.....]
Les valeurs sont identiques et les références de tous les "sous objets" sont aussi identiques.
En revanche pour le même code sur Chrome ou IE, les références ne sont plus les mêmes (fr.projet.ObjetForm@ad8e84 et fr.projet.ObjetForm@1ee2c5) et pire certaines données ne sont plus les bonnes, exemple un string qui passe de :
forward=success à forward=<null>
Ma question globale est : Est-ce que ce comportement est normal? Pourquoi le comportement du serveur est différent selon le navigateur??
D'autre part, est-ce qu'une fois mis en session mon objet peut être modifié et l'objet en session impacté dans la foulée ou bien il faut toujours explicitement faire un appel à getAttribute et setAttribute? Je pensais que c'était le second cas mais cela pourrait peut être expliquer le problème (bien qu'entre les deux appels la valeur de ce fameux forward n'est pas modifiée en théorie...).
Voilà merci d'avance à ceux qui auront lu.
Partager