Précédent   Forum du club des développeurs et IT Pro > Java > Serveurs, conteneurs, et Java EE > Autres
Autres Vos questions sur les autres serveurs d'application Java.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 10/05/2012, 15h24   #1
Linio
Membre éclairé
 
Avatar de Linio
 
Inscription : octobre 2005
Messages : 431
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 431
Points : 305
Points : 305
Par défaut Sessions différentes selon le navigateur

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
Linio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2012, 22h13   #2
sekaijin
Expert Confirmé Sénior
 
Avatar de sekaijin
 
Homme
Urbaniste
Inscription : juillet 2004
Messages : 2 171
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 49
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 2 171
Points : 5 162
Points : 5 162
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
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2012, 01h17   #3
fxrobin
Membre Expert
 
Avatar de fxrobin
 
Homme
Formateur JAVA / XML
Inscription : novembre 2007
Messages : 852
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Formateur JAVA / XML
Secteur : Service public

Informations forums :
Inscription : novembre 2007
Messages : 852
Points : 1 300
Points : 1 300
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" ...
fxrobin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2012, 01h31   #4
fxrobin
Membre Expert
 
Avatar de fxrobin
 
Homme
Formateur JAVA / XML
Inscription : novembre 2007
Messages : 852
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Formateur JAVA / XML
Secteur : Service public

Informations forums :
Inscription : novembre 2007
Messages : 852
Points : 1 300
Points : 1 300
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
fxrobin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2012, 13h13   #5
Linio
Membre éclairé
 
Avatar de Linio
 
Inscription : octobre 2005
Messages : 431
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 431
Points : 305
Points : 305
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
Linio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2012, 16h25   #6
fxrobin
Membre Expert
 
Avatar de fxrobin
 
Homme
Formateur JAVA / XML
Inscription : novembre 2007
Messages : 852
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Formateur JAVA / XML
Secteur : Service public

Informations forums :
Inscription : novembre 2007
Messages : 852
Points : 1 300
Points : 1 300
un bug dans ton code, je ne vois plus que ça.
fxrobin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2012, 09h37   #7
Linio
Membre éclairé
 
Avatar de Linio
 
Inscription : octobre 2005
Messages : 431
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 431
Points : 305
Points : 305
Citation:
Envoyé par fxrobin Voir le message
un bug dans ton code, je ne vois plus que ça.
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
Linio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2012, 09h45   #8
fxrobin
Membre Expert
 
Avatar de fxrobin
 
Homme
Formateur JAVA / XML
Inscription : novembre 2007
Messages : 852
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Formateur JAVA / XML
Secteur : Service public

Informations forums :
Inscription : novembre 2007
Messages : 852
Points : 1 300
Points : 1 300
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.
fxrobin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2012, 10h42   #9
Linio
Membre éclairé
 
Avatar de Linio
 
Inscription : octobre 2005
Messages : 431
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 431
Points : 305
Points : 305
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
Linio est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 05h13.


 
 
 
 
Partenaires

Hébergement Web