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 :

erreur http 500 sur un servlet


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 40
    Points : 25
    Points
    25
    Par défaut erreur http 500 sur un servlet
    Bonjour, j'ai crée un servlet qui affiche le contenu d'une table d'une base de donnée mysql.
    le problème est que la page retournée de ma servlet ne s'affiche pas :

    Etat HTTP 500 -

    type Rapport d'exception
    message
    description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.
    exception
    java.lang.NullPointerException Servlet1.doGet(Servlet1.java:52) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/5.5.16.


    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
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException  {
         Connection con= null;
         ResultSet resultats = null;
         String requete = " ";
        try    {                                             //chargement du pilote
          Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        }
        catch (ClassNotFoundException e)    {
        }                                                                            
        try    {                            //connection a la base de donnees
          con= DriverManager.getConnection("jdbc:odbc:test_java");
        }
        catch (SQLException e)    {
        }
                                               //creation et execution de la requete     
        requete = "SELECT * FROM seuils";
        try    {
          Statement stmt = con.createStatement();
          resultats = stmt.executeQuery(requete);
        }
        catch (SQLException e)    {
        }
        response.setContentType("text/html");
        PrintWriter out = new PrintWriter (response.getOutputStream());
        out.println("<html>");
        out.println("<head><title>affichage des seuils</title></head>");
        out.println("<body bgcolor='#8DE9FC'><br><center><h1>voici les seuils<h1>");
        out.println("<br><br><table border=1>");
        out.println("<tr><td>");
        try    {
          ResultSetMetaData rsmd = resultats.getMetaData();
          int nbCols = rsmd.getColumnCount
          boolean encore = resultats.next();
            while (encore)//tant que la table n'est pas vide...
            {
              for (int i = 1; i<=nbCols; i++)
              {
                System.out.println(resultats.getInt(i));
                switch (i)
                {
                  case 1 :
                          out.println("précipitation maxi : " + resultats.getString(i)+ "</td><td>");
                          break;
                  case 2 :
                          out.println( "précipitation maxi : " + resultats.getString(i)+ "</td><td>");
                          break;
                  case 3 :
                          out.println( "vitesse du vent maxi : " + resultats.getString(i)+ "</td><td>");
                          break;
                  case 4 :
                          out.println( "vitesse du vent maxi : " + resultats.getString(i)+ "</td><td>");
                          break;
                  default :
                          break;
                }
              }
                 encore = resultats.next();
            }
          out.println("</tr></table></center></body></html>");
          out.close();
          resultats.close();
        }
        catch (SQLException e)  {
        }
      }  
      public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException  {
        doGet(request,response);
      }
    }

    .html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <html><head><title>test servlet journalier</title></head>
    <marquee><h1>Bienvenu sur le site de la station météo</h1></marquee>
    <br><br><body bgcolor="yellow">
    <form action=http://127.0.0.1:8080/servlet_seuils/servlet/Servlet1 methode="post">
    <br><br><br>
    <center>
    <input type=submit value="affichage de vos seuils">
    </center>
    </form>
    </body></html>


    Quelqu'un sait-il ou se trouve l'erreur ?

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 40
    Points : 25
    Points
    25
    Par défaut
    Le problème provient de la connection à la base de données.car le servlet fonctionne sans la connection à la base de données.Je ne vois pas où est l'erreur vu que le programme fonctionne parfaitement dans une de mes applications sous jbuilder 6 personal.

  3. #3
    Membre émérite
    Avatar de alexismp
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 503
    Points : 2 777
    Points
    2 777
    Par défaut
    > a trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/5.5.16.

    Le fichier de log de tomcat serait le bienvenu (ou au moins les numéros de ligne de ta ligne).

  4. #4
    Rédacteur/Modérateur
    Avatar de Laurent.B
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    3 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 3 468
    Points : 17 036
    Points
    17 036
    Par défaut
    Tu catches tes exceptions sans rien y mettre dedans et tu ne vérifies pas si ta connexion est différente de null... donc c'est normal que ça plante si la connexion n'est pas ok.
    Responsable FAQ Eclipse | Maintiens et développe un des logiciels destinés aux rédacteurs sur developpez.com
    Gardons toujours à l'esprit que le forum constitue une base documentaire, dont l'utilité et la qualité dépendent du soin apporté à nos questions et nos réponses. Soyons polis, précis (dans le titre et dans le corps des questions), concis, constructifs et faisons de notre mieux pour respecter la langue française et sa grammaire. Merci pour nous (les modérateurs) mais aussi et surtout, merci pour vous.
    Problème solutionné => je vais au bas de la page et je clique sur le bouton (qui suite à mise à jour du forum, a légèrement changé d'aspect).

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 40
    Points : 25
    Points
    25
    Par défaut
    Bonsoir,
    Après avoir fait un pas à pas, en faite il n'arrive pas à se connecter à la base de données !!
    la ligne qui pose apparemment problème est :
    catch (SQLException e) {

    la voici dans le contexte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    try
    {
    String DBurl="jdbc:odbc:test_java";
    con= DriverManager.getConnection(DBurl);
    }catch (SQLException e)
    {
      out
    .println ("Connection a la base de donnees impossible");
    }


  6. #6
    Rédacteur/Modérateur
    Avatar de Laurent.B
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    3 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 3 468
    Points : 17 036
    Points
    17 036
    Par défaut
    Non, ce n'est pas catch (SQLException e) { qui pose problème, c'est parce qu'il y a un problème dans ta chaîne de connexion à la bdd. Le libellé "test_java" qui ne correspond peut-être pas à ta source de données odbc...
    Enfin là il est difficile de t'aider si tu n'a pas correctement configuré ta source.
    Tu t'es inspiré de quoi pour faire tout cela?
    Responsable FAQ Eclipse | Maintiens et développe un des logiciels destinés aux rédacteurs sur developpez.com
    Gardons toujours à l'esprit que le forum constitue une base documentaire, dont l'utilité et la qualité dépendent du soin apporté à nos questions et nos réponses. Soyons polis, précis (dans le titre et dans le corps des questions), concis, constructifs et faisons de notre mieux pour respecter la langue française et sa grammaire. Merci pour nous (les modérateurs) mais aussi et surtout, merci pour vous.
    Problème solutionné => je vais au bas de la page et je clique sur le bouton (qui suite à mise à jour du forum, a légèrement changé d'aspect).

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 40
    Points : 25
    Points
    25
    Par défaut
    non je ne pense pas que ce soit un problème au niveau du pilote OBDC car il a été bien installer et fonctionne correctement dans une application de test.Je me suis inspiré d'une doc MySQL et java qui informe sur l'installation du pilote obdc et fait un test a partir d'un programme pour voir si la connection s'éffectue, ce prog :
    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
    package testjdbc10;
    import java.sql.*;
    import java.awt.*;
    import javax.swing.*;
    public class Application1
    {
      private static void affiche (String message)
      {
        System.out.println(message);
      }
     
      private static void arret (String message)
      {
        System.err.println(message);
        System.exit(99);
      }
     
      private static void main (java.lang.String[] args)
      {
        Connection con= null;
        ResultSet resultats = null;
        String requete = " ";
        //chargement du pilote
        try
        {
          Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        }catch (ClassNotFoundException e)
        {
          arret("impossible de lancer le pilote ODBC");
        }
        //connection a la base de donnees
        affiche("connection a la base de donnees");
        try
        {
           String DBurl="jdbc:odbc:test_java";
           con= DriverManager.getConnection(DBurl);
        }catch (SQLException e)
        {
           arret ("Connection a la base de donnees impossible");
        }
        //creation et execution de la requete
        affiche ("création et execution de la requete");
        requete = "SELECT * FROM seuils";
        try
        {
           Statement stmt = con.createStatement();
           resultats = stmt.executeQuery(requete);
        }catch (SQLException e)
        {
           arret("Anomalie lors de l'execution de la requete");
        }
        //parcours des donnees retournees
        affiche("Parcours des donnees retournees");
        try
        {
           ResultSetMetaData rsmd = resultats.getMetaData();
           int nbCols = rsmd.getColumnCount();
           boolean encore = resultats.next();
           while (encore)
           {
              int i;
              for (i=1;i<= nbCols; i++)
                  System.out.println(resultats.getString(i));
              encore = resultats.next();
           }
           resultats.close();
        } catch (SQLException e)
        {
           arret (e.getMessage());
        }
        affiche ("fin du programme");
        System.exit(0);
      }
    }
    J'ai juste remplacer les "affiche" et "arret" par des "out.println" et l'ai intégré dans un servlet.Est-ce la bonne méthode ?

  8. #8
    Rédacteur/Modérateur
    Avatar de Laurent.B
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    3 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 3 468
    Points : 17 036
    Points
    17 036
    Par défaut
    Oui c'est une méthode pour tester... après si tu veux faire quelque chose de plus sérieux, faudra envisager d'autres méthodes pour te connecter à ta bdd
    Par contre, lorsque tu catches une exception il faut toujours la traiter, en affichant l'erreur dans la console par exemple ou en faisant une action qui te permette d'agir en conséquence (en évitant de t'en servir comme un comportement normal puisque cela n'est pas très efficace en terme de rapidité).

    Bref, le minimum à faire est de faire parler ton exception en mettant quelque chose dans le style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(e.getMessage()); // lorsque 'e' est l'instance de l'exception
    Donc à présent, tu devrais pourvoir obtenir un message sans doute un peu plus explicite sur l'erreur rencontrée...
    Responsable FAQ Eclipse | Maintiens et développe un des logiciels destinés aux rédacteurs sur developpez.com
    Gardons toujours à l'esprit que le forum constitue une base documentaire, dont l'utilité et la qualité dépendent du soin apporté à nos questions et nos réponses. Soyons polis, précis (dans le titre et dans le corps des questions), concis, constructifs et faisons de notre mieux pour respecter la langue française et sa grammaire. Merci pour nous (les modérateurs) mais aussi et surtout, merci pour vous.
    Problème solutionné => je vais au bas de la page et je clique sur le bouton (qui suite à mise à jour du forum, a légèrement changé d'aspect).

  9. #9
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String DBurl="jdbc:odbc:test_java"
    Heu, je voter également pour ce chemin d'accès ... test_java c'est ta base ? et il n'y a pas de chemin d'accès à cette base comme "//localhost/test_java" ?!? enfin, la je vois le mot odbc, donc je ne garantis rien mais en jdbc, il me semble que l'on agit ainsi

    Pour une connexion a MySQL, mon chemin perso est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jdbc:mysql:[serveur]:[port]/[nom_base]
    où :
    serveur = //localhost
    port = 3306 (par défaut avec une install de MySQL5).

    EDIT : Autant pour moi, en lisant plus en détail, c'est vraiment une connexion ODBC ... prochain coup, je lirai plus en détail, mais si c'est sous MySQL pourquoi prendre ODBC qui demande une configuration du pilote sur le poste alors que JDBC fonctionnera tout seul ?!?
    See you, space cowboy... and if you're satisfied, click on

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 40
    Points : 25
    Points
    25
    Par défaut
    Voici l'erreur qui m'est retournée :
    [Microsoft][Gestionnaire de pilotes ODBC] Source de données introuvable et nom de pilote non spécifié.
    sur ce bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    try 
    {
    String DBurl="jdbc:odbc:test_java";
    con= DriverManager.getConnection(DBurl);
    out.println("<br>Tentative de Connection a la base");
    }
    catch (SQLException e) 
    {
    out.println("<br>Connection a la base de donnees impossible");
    out.println( "<br>" + e.getMessage());
    }
    alors que le pilote est correctement configurer :

    ---------------------------
    MySQL ODBC 3.51 Driver, Version : 03.51.03
    ---------------------------
    Data Source 'test_java' Connected Successfully to 'mysqld-4.1.9-max' !!!
    ---------------------------
    OK

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 40
    Points : 25
    Points
    25
    Par défaut re BizuR
    oué mais c'est mon professeur qui m'a forcer a passer par le pilote OBDC.
    Donc je suis obliger de passer par ce dernier.
    @ +

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

Discussions similaires

  1. [Exchange 2010] Erreur HTTP 500 sur Autodiscover après MAJ SP
    Par webrider dans le forum Exchange Server
    Réponses: 0
    Dernier message: 29/05/2012, 15h25
  2. Erreur Http 500 sous eclipse avec aPI servlet
    Par RouRa22 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 21/04/2009, 17h25
  3. Erreur HTTP 500
    Par nicolasferraris dans le forum ASP
    Réponses: 6
    Dernier message: 09/03/2007, 09h45
  4. Erreur HTTP 500 Tomcat
    Par kobe dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 19/01/2006, 12h16
  5. [Tomcat] Erreur HTTP 500
    Par gandalf_le_blanc dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 23/08/2004, 15h26

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