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 :

Rechargement périodique d'une servlet


Sujet :

Servlets/JSP Java

  1. #1
    Membre éclairé
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Points : 828
    Points
    828
    Par défaut Rechargement périodique d'une servlet
    Bonjour,

    J'ai une servlet qui se connecte à une base de données, qui prend des informations et les affiches sous une forme de courbe sur une page JSP.

    Ma base de données est mise à jour toutes les 5min quasiment mais le problème est que je dois redémarrer mon serveur afin que ma servlet prenne en compte ces changements.

    Y a-t-il un moyen pour qu'à chaque fois que je rafraichis ma page web et qu'il y a une insertion dans ma base de données, ma courbe soit à jour sans redémarrer mon serveur local ?
    J'ai cherché j'ai trouvé la fonction classloader mais apparemment celle-ci ne fonctionne que s'il y a un changement de code...

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Les méthodes doPost/doGet d'une servlet sont appelées chaque fois que la servlet est invoquée avec la méthode HTTP en question.

    Si t'as servlet ne récupère jamais des données à jour c'est que ta base de données ne l'est pas. As-tu bien comitté des transactions après avoir inséré en base de données ?
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  3. #3
    Membre éclairé
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Points : 828
    Points
    828
    Par défaut
    oui,
    la 1ere fois que je lance l'adresse dans mon naviguateur, j'ai une courbe avec les données existant de ma base de données, mais une fois que j'ajoute une autre donnée a ma table et et que je rafraichi ma page, rien ne se passe..d'ailleurs je n'ai plus d'affichage

    Voila comment j'affiche ma courbe generé par ma servlet en JSP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img border="1" src="Http" width="600 height="300">
    avec Http est ne nom de ma servlet ( j'ai pas un formulaire )

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    c'est le code de ta servlet qui compte. C'est lui qui ne refait pas ses calculs.

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2008
    Messages : 34
    Points : 53
    Points
    53
    Par défaut
    Salut, en faisant ça je sais pas si ton image est rechargée, car si l on considère que l'appel d'une servlet dans un navigateur recharge forcément ta page, à mon avis ce même appel dans src d'une image ne ce passe pas de la même manière étant donné que les navigateur ont un cache automatique sur les ressources, il est possible qu'il considère que ton image est déja présente dans son cache

  6. #6
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    effectivement le problème de cache du navigateur peut être à l'origine de ton problème
    Tu peux vider ton cache pour vérifier
    Sinon une technique est de générer un nom de fichier aléatoire et de renvoyer le path de ton image à ta JSP

  7. #7
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Plus simplement d'ajouter une entête HTTP qui indique qu'il ne faut pas mettre l'image en cache

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    response.setHeader("Pragma", "no-cache");
    response.setHeader("Cache-Control", "no-cache");
    response.setDateHeader("Expires", 1L);
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    par défaut la sortie des servlets n'est pas cachée par le navigateur, puisque celle-ci n'emet pas de date de dernière modification ni de directive de cache.

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2008
    Messages : 34
    Points : 53
    Points
    53
    Par défaut
    Mais la page html elle est mise en cache, donc comme l'image appartient a la page html, elle doit être encache.

    Ce que tu dit tchize_ est valable si j'appel la servlet depuis la barre d'adresse de mon navigateur (ou une méthode similaire.), enfin je pense.

    Et concernant la déclaration d'une entête pour spécifier au navigateur de ne pas garder le cache, si j'ai bien compris la demande, même chose, c'est uniquement l'image qui est retourné donc pas possible de spécifier un header sur la page html.

  10. #10
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    L'image est générée donc c'est bien une servlet qui la sert ...
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  11. #11
    Membre éclairé
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Points : 828
    Points
    828
    Par défaut
    je vais essayer le truc du cache et je vous met au courant

    merci

  12. #12
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par ninlock Voir le message
    Mais la page html elle est mise en cache, donc comme l'image appartient a la page html, elle doit être encache.
    Je crois que vous confondez la cache (la liste des ressources que le navigateur garde à plus ou moins longue échéance sur le disque dur, et qui est traitée individuellement pour chaque ressource) et le fait que le navigateur n'effectue jamais de requetes vers les serveur quand vous utilisez le bouton "back" du navigateur... non?

  13. #13
    Membre éclairé
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Points : 828
    Points
    828
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    c'est le code de ta servlet qui compte. C'est lui qui ne refait pas ses calculs.
    Voila le code de ma servlet
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
     
    package metier;
     
    import java.awt.Graphics;
     
    import java.awt.image.BufferedImage;
     
    import java.io.File;
     
    import java.io.IOException;
     
    import java.io.OutputStream;
     
    import java.io.PrintWriter;
     
    import java.sql.Date;
     
    import java.sql.ResultSet;
     
    import java.sql.SQLException;
     
    import java.sql.Timestamp;
     
    import java.util.Enumeration;
     
     
     
    import javax.imageio.ImageIO;
     
    import javax.servlet.ServletConfig;
     
    import javax.servlet.ServletContext;
     
    import javax.servlet.ServletException;
     
    import javax.servlet.http.HttpServlet;
     
    import javax.servlet.http.HttpServletRequest;
     
    import javax.servlet.http.HttpServletResponse;
     
     
     
    import org.jfree.chart.ChartFactory;
     
    import org.jfree.chart.ChartUtilities;
     
    import org.jfree.chart.JFreeChart;
     
    import org.jfree.data.time.Minute;
     
    import org.jfree.data.time.Second;
     
    import org.jfree.data.time.TimeSeries;
     
    import org.jfree.data.time.TimeSeriesCollection;
     
     
     
    import com.sun.corba.se.impl.orbutil.graph.Graph;
     
     
     
    import marouene.TimeSeriesDemoTest;
     
     
     
     
     
    public class Http extends HttpServlet {
     
    	protected void processRequest(HttpServletRequest request, HttpServletResponse response)
     
        throws ServletException, IOException {
     
     
     
    		response.setContentType("image/png");
     
    		TimeSeriesDemoTest http = new marouene.TimeSeriesDemoTest("Http");
     
    		 http.pack();
     
     
     
     
     
     
     
     JFreeChart imagechart;
     
    try {
     
    	imagechart = http.tracercourbe("heure","http","httptable","Evolution du transfert Http","Debit en Ko/s","now()");
     
    	 OutputStream out = response.getOutputStream(); 
     
    	 ChartUtilities.writeChartAsPNG(out, imagechart, 700, 500);	
     
     
     
     
     
    } catch (SQLException e) {
     
    	e.printStackTrace();
     
    }
     
     
     
    	}
     
     
     
    	 protected void doGet(HttpServletRequest request, HttpServletResponse response)
     
         throws ServletException, IOException {
     
     processRequest(request, response);
     
    }
     
     
     
    	}
    et pour 'laffichage j'ai fait ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     oui,
    la 1ere fois que je lance l'adresse dans mon naviguateur, j'ai une courbe avec les données existant de ma base de données, mais une fois que j'ajoute une autre donnée a ma table et et que je rafraichi ma page, rien ne se passe..d'ailleurs je n'ai plus d'affichage
     
    Voila comment j'affiche ma courbe generé par ma servlet en JSP
     
    Code :
     
     
    <img border="1" src="Http" width="600 height="300">
     
    avec Http est ne nom de ma servlet ( j'ai pas un formulaire )
    Chaque fois que je rafraichi ma page et il y'a un nouveau point il s'affiche désormais, je ne sais pas si c'etait un probleme de servlet ou bien le fait que quand j'appel une image par l'adresse de servlet ca la recharge automatiquement

  14. #14
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Dans un premier temps tu pourrais stocker l'image générée dans un fichier et ouvrir le fichier avec ton explorateur de fichier.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  15. #15
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    bouton droit sur l'image, afficher l'image.

    Quand tu fait F5 ensuite dans cette page, l'image se rafraichis-t-elle?

    es tu sur que l'image générée par le chart se fasse bien à chaque fois sur les nouvelles données?

  16. #16
    Membre éclairé
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Points : 828
    Points
    828
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    bouton droit sur l'image, afficher l'image.

    Quand tu fait F5 ensuite dans cette page, l'image se rafraichis-t-elle?

    es tu sur que l'image générée par le chart se fasse bien à chaque fois sur les nouvelles données?
    Quand je met l'adresse de ma servlet dans mon naviguateur, et je clique sur f5, elle se rafraichie

  17. #17
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    et tu fais comment pour réafficher ta page html (quand l'image elle ne se rafraichi pas)? Le contenu de la page, lui, il se raffraichi?

  18. #18
    Membre éclairé
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Points : 828
    Points
    828
    Par défaut
    Le contenu de la page est statique, il y'a pas grand chose...c'est juste la courbe qui change

    J'ai essayé ca mnt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img border="1" src="Http" width="600 height="300">
    et ca a marché pour le moment

Discussions similaires

  1. Réponses: 28
    Dernier message: 18/05/2010, 15h14
  2. [TOMCAT] Problème de timeout d'une servlet
    Par tuxor dans le forum Tomcat et TomEE
    Réponses: 5
    Dernier message: 18/09/2007, 12h04
  3. Réponses: 2
    Dernier message: 29/03/2004, 13h44
  4. [debutant]renvoyer sur une jsp depuis une servlet
    Par omega dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 23/03/2004, 11h55
  5. Affichage périodique d'une fonction
    Par boobob dans le forum C
    Réponses: 16
    Dernier message: 08/12/2003, 16h06

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