IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

[Servlet][Session][cache]Mise à jour non systematique


Sujet :

Servlets/JSP Java

  1. #1
    Membre émérite Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Points : 2 453
    Points
    2 453
    Par défaut [Servlet][Session][cache]Mise à jour non systematique
    Bonjour,

    J'ai besoin d'afficher sur mon post client l'heure du serveur.
    Pour se faire je veux reactualiser de temps à autre l'heure affichée pour rester synchro avec celle du serveur.

    J'ai utilisé Ajax qui appele une servlet censée recuperer l'heure serveur. Cette heure est ensuite stockée dans une variable globale que mon javascript utilise pour l'affichage et maj de l'horloge.

    Ma servlet pour récuperer l'heure serveur, va chercher des infos de session pour notemment effectuer la connexion à la base.

    Pour tester j'ai effectuer cette synchro toute les 10sec. Le problème est que toute les 10sec mon horloge se remet à l'heure de la première synchronisation.
    De plus de temps à autre (entre 3 et 15min ou plus) la synchro se fait bien. Je pense donc à un probleme de cache.

    La question, comment faire pour éviter ce problème ? Ou si je fait une synchro toutes les 30min le problème pourra-t-il apparaître quand meme ?


    Le javascript de synchro:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    function synchro_time()
        {
            getXhr()
            xhr.onreadystatechange = function(){
     
                if(xhr.readyState == 4 && xhr.status == 200){
                    jsHeureServeur = xhr.responseText.substr(11,8);
                    setTimeout('synchro_time()',10000); 
                }
            }
            xhr.open("GET","<%=request.getContextPath()%>/servlets/clock",true);
            xhr.send(null);
        }
    Un bout de la servlet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
      {
        ContexteSession contexteSession = ... // recuperation session
     
        Timebeann TimeBeann = contexteSession.get...(); 
        response.getWriter().println(TimeBeann.getTime().toString());
        response.getWriter().close();
      }
    Edit> J'allais oublier, merci d'avance
    Edit2> Avec un titre c encore mieux
    Je ne réponds pas aux questions techniques par MP, le forum est là pour cela.

    La crypto c'est comme les flambys, une fois que tu as trouvé la languette tu as juste à tirer pour tout faire tomber.

    (\ _ /)
    (='.'=)
    Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 85
    Points : 81
    Points
    81
    Par défaut
    Salut,

    Essayes de faire un timer javascript qui toutes les 10s fait de l'ajax
    pour appelle une servlet qui te retourne (entre autre) l'heure du serveur.
    Genre une fonction qui fait un XmlhttpRequest() et qui te retourne du xml
    contenant l'heure du serveur (Calendar.newInstance().getTimeInMillis()...)

    Ensuite, toujours dans ton javascript tu mets directement à jours ton "text"
    dans ta page:

    document.getElementById().InnerHTML = tonxml.getElementByID() blablabla;

    Si c'est ce que tu fais et tu as toujours la même heure , essayes d'ajouter
    des trucs du genre dans ta servlet pour être sure de ton coup:

    response.setHeader("Cache-Control", "no-cache,no-store,max-age=0,s-maxage=0");
    response.setHeader("Pragma", "no-cache");


    Voilà a+
    Xavier

  3. #3
    Membre émérite Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Points : 2 453
    Points
    2 453
    Par défaut
    Merci,

    Effectivement la technique que tu as décrite est à peu de chose pret ce que j'utilise.

    J'essairai d'ajouter tes deux lignes mardi voir si ça aide.

    Edit> Ca marche nickel merci !
    Je ne réponds pas aux questions techniques par MP, le forum est là pour cela.

    La crypto c'est comme les flambys, une fois que tu as trouvé la languette tu as juste à tirer pour tout faire tomber.

    (\ _ /)
    (='.'=)
    Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mise à jour non effectuée en table
    Par runcafre91 dans le forum Langage
    Réponses: 6
    Dernier message: 22/02/2010, 22h26
  2. Plus ses sessions depuis mise à jour
    Par pmoury06 dans le forum ASP
    Réponses: 2
    Dernier message: 26/02/2009, 11h49
  3. mise à jour non permise en VB6
    Par roura dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 23/08/2007, 08h40
  4. Mise à jour non automatique
    Par benejepo dans le forum Access
    Réponses: 1
    Dernier message: 08/01/2007, 18h11
  5. Erreur 3251 : mise à jour non prise en charge
    Par gletare dans le forum Access
    Réponses: 2
    Dernier message: 10/02/2006, 10h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo