|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre éclairé
![]() Inscription : octobre 2005 Messages : 431 ![]() |
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.
__________________
Linio |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() Urbaniste Inscription : juillet 2004 Messages : 2 171 ![]() |
comme ça je n esaurais te répondre.
mais lorsque le serveur reçois une requete du navigateur il reçoit avec tout un tas d'informations parmi ces info il y a le UserAgent qui permet au serveur de connaitre les capacité du navigateur et il arrive souvent que les serveur soit configuré pour avoir des comportement légèrement différent d'un navigateur à l'autre. ça n'a donc rien d'étonnant. par contre en général ces réglages sont là pour que justement tous les navigateurs ait un comportement identique face au serveur (chose qu'ils n'ont pas par défaut) pour ce qui est des session ça me parait pas très normal. qu'en est-il de l'identifiant de session ? j'ai bien l'impression que tu ne récupère pas la même session. A+JYT A+JYT |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Formateur JAVA / XML Inscription : novembre 2007 Messages : 852 ![]() |
Comme le dit sekaijin, ta session doit "changer" car le navigateur :
- n'a pas compris le cookie de session - n'a pas renvoyé le cookie de session tu peux faire un "session.getId();" pour obtenir l'ID et voir s'il change quand tu passes de page en page (normalement non) Est-ce que tu attaques Oracle AS directement où il a un serveur frontal style Apache ? si il y a un serveur frontal, est-ce mod_jk ou mod_proxy qui est utilisé pour forwarder les requêtes. Je crois me souvenir de ce genre de comportements un peu étrange avec de vieilles version d'apache en frontal. Comme ton projet n'a pas l'air d'être "récent" ... |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Formateur JAVA / XML Inscription : novembre 2007 Messages : 852 ![]() |
il me semblent aussi que les pages d'erreurs (404) invalident les sessions, surtout quand elle redirigent vers une page de login.
Si jamais ta page appelle une ressource inexistante (favicon, images, css, etc...) qui génère une 404 "invisible", cela peut t'invalider la session. Le coup du favicon, me dit qqch d'ailleurs, et est lié effectivement assez à IE. Tiens : http://www.webperformance.com/load-t...server-stunts/ pour créer un favicon : http://1loup.net/index.php/2007/02/2...x-valide-xhtml |
|
|
00
|
|
|
#5 |
|
Membre éclairé
![]() Inscription : octobre 2005 Messages : 431 ![]() |
Tout d'abord merci de vos réponses.
J'ai regardé, avec un test sous Chrome, je récupère bien l'identifiant de la session et il est identique sur la page A et la page B. Ce qui me semble étonnant c'est que le comportement semble similaire sur le serveur en production (OracleAS donc) et chez moi en debug (sur un bête Tomcat). Il n'y a pas de problème de ressources, lorsque j'analyse les requêtes, pour toutes les requêtes et ce depuis le début de mon test et le passage des pages précédant celle qui "bug", je n'ai que des 200 OK comme statuts. De ma connaissance nous ne passons effectivement pas sur les applications en direct mais par un WebCache, je vais donc me renseigner sur ce point là, mais vu que je reproduis le bug sur un Tomcat chez moi, le problème ne vient probablement pas de là (je n'ai pas de proxy sur mon propre poste...) Si vous avez d'autres idées...
__________________
Linio |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Formateur JAVA / XML Inscription : novembre 2007 Messages : 852 ![]() |
un bug dans ton code, je ne vois plus que ça.
|
|
|
00
|
|
|
#7 |
|
Membre éclairé
![]() Inscription : octobre 2005 Messages : 431 ![]() |
Un bug sur un code qui marche depuis un moment et qui marche aussi sur un autre browser ça me semble un peu ... étonnant. C'est pas comme s'il y avait des if (firefox) et if(ie) dans le programme java... m'enfin merci quand même...
__________________
Linio |
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Formateur JAVA / XML Inscription : novembre 2007 Messages : 852 ![]() |
les sessions, c'est qqch qui marche très bien en JAVA, qqsoit le navigateur, donc y'a forcément un problème qqpart, et l'endroit le plus probable est ton application (code, configuration, etc.)
est-ce que tu peux m'envoyer ton application pour que je regarde ? je te donne mon mail en MP si tu veux. |
|
|
00
|
|
|
#9 |
|
Membre éclairé
![]() Inscription : octobre 2005 Messages : 431 ![]() |
Je poste ma réponse ici vu que ta boite MP est pleine :
Bonjour, C'est très gentil de vouloir m'aider, malheureusement c'est une appli professionnelle que je ne peux certainement pas envoyer au petit vent Qui plus est vu la tête des bases de données, et de tous les trucs pour initialiser celle ci derrière tu aurais du mal je pense à reproduire le comportement exact dans le cas précis où je suis. Je vais essayer de faire un programme de test plus soft et voir si j'arrive à reproduire le comportement, je te tiens au courant. Merci en tout cas!
__________________
Linio |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com