Partage
  • Partager sur Facebook
  • Partager sur Twitter

Corriger un message d'erreur (JAVA EE)

Résolu

Sujet résolu
    13 février 2014 à 0:20:33

    Bonjour
    Je n'arrive pas à trouver l'erreur 
    voici le journal que j'obtiens lors du lancement du tomcat

    SEVERE: Exception lors de l'envoi de l'évènement contexte initialisé (context initialized) à l'instance de classe d'écoute (listener) pro.config.InitialisationDaoFactory
    java.lang.NullPointerException
    	at java.lang.Class.forName0(Native Method)
    	at java.lang.Class.forName(Unknown Source)
    	at pro.dao.DAOFactory.getInstance(DAOFactory.java:58)
    	at pro.config.InitialisationDaoFactory.contextInitialized(InitialisationDaoFactory.java:19)
    	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939)
    	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
    	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    	at java.util.concurrent.FutureTask.run(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    	at java.lang.Thread.run(Unknown Source)

     j'attends vos réponses
    merci

    -
    Edité par osso045 17 février 2014 à 13:04:11

    • Partager sur Facebook
    • Partager sur Twitter
      13 février 2014 à 10:42:48

      Montres nous la classe et DAOFactory.java surtout la ligne 58.

      A priori, je suppose que tu load le driver MySQL ? As-tu rajouté la lib mysql dans ton war ?

      • Partager sur Facebook
      • Partager sur Twitter
        13 février 2014 à 12:15:16

        package pro.dao;
        
        import java.io.IOException;
        import java.io.InputStream;
        import java.sql.Connection;
        import java.sql.DriverManager;
        import java.sql.SQLException;
        import java.util.Properties;
        
        public class DAOFactory {
        
            private static final String FICHIER_PROPERTIES       = "/pro/dao/dao.properties";
            private static final String PROPERTY_URL             = "url";
            private static final String PROPERTY_DRIVER          = "driver";
            private static final String PROPERTY_NOM_UTILISATEUR = "nomutilisateur";
            private static final String PROPERTY_MOT_DE_PASSE    = "motdepasse";
        
        
            private String              url;
            private String              username;
            private String              password;
        
            DAOFactory( String url, String username, String password ) {
                this.url = url;
                this.username = username;
                this.password = password;
            }
        
            /*
             * Méthode chargée de récupérer les informations de connexion à la base de
             * données, charger le driver JDBC et retourner une instance de la Factory
             */
            public static DAOFactory getInstance() throws DAOConfigurationException {
                Properties properties = new Properties();
                String url;
                String driver;
                String nomUtilisateur;
                String motDePasse;
        
                ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
                InputStream fichierProperties = classLoader.getResourceAsStream( FICHIER_PROPERTIES );
        
                if ( fichierProperties == null ) {
                    throw new DAOConfigurationException( "Le fichier properties " + FICHIER_PROPERTIES + " est introuvable." );
                }
        
                try {
                    properties.load( fichierProperties );
                    url = properties.getProperty( PROPERTY_URL );
                    driver = properties.getProperty( PROPERTY_DRIVER );
                    nomUtilisateur = properties.getProperty( PROPERTY_NOM_UTILISATEUR );
                    motDePasse = properties.getProperty( PROPERTY_MOT_DE_PASSE );
                } catch ( IOException e ) {
                    throw new DAOConfigurationException( "Impossible de charger le fichier properties " + FICHIER_PROPERTIES, e );
                }
        
                try {
                    Class.forName( driver );
                } catch ( ClassNotFoundException e ) {
                    throw new DAOConfigurationException( "Le driver est introuvable dans le classpath.", e );
                }
        
                DAOFactory instance = new DAOFactory( url, nomUtilisateur, motDePasse );
                return instance;
            }
        
            /* Méthode chargée de fournir une connexion à la base de données */
             /* package */ Connection getConnection() throws SQLException {
                return DriverManager.getConnection( url, username, password );
            }
        
            /*
             * Méthodes de récupération de l'implémentation des différents DAO (un seul
             * pour le moment)
             */
            public UtilisateurDao getUtilisateurDao() {
                return new UtilisateurDaoImpl( this );
            }
        }
        • Partager sur Facebook
        • Partager sur Twitter
          13 février 2014 à 12:25:21

          Bonjour Olivier.
          Le problème se pose effectivement dans la ligne 58 de la classe DAOFactory. Je pense que  cette classe n'arrive pas à récupérer les informations (url, driver, bdd, mot de passe)  qui se trouvent dans le fichier dao.properties; sachant que j'ai copier-coller le code du tutoriel tel-quel est et j'ai rien changé (sauf les noms des packages).

          A propos votre question, j'ai bien mis le fichier "mysql-connector-java-5.1.29-bin.jar" dans le chemin "C:\tomcat7\apache-tomcat-7.0.47\lib" comme il est indiqué dans le tutoriel.

           

          Merci pour votre réponse.

          -
          Edité par osso045 13 février 2014 à 12:30:56

          • Partager sur Facebook
          • Partager sur Twitter
            13 février 2014 à 12:55:15

            Relis les pages 418 et 419 du tuto sur la JEE sa va t'aidé.

            Mais est ce que tu peux également montré ton code de la classe "InitialisationDaoFactory".

            • Partager sur Facebook
            • Partager sur Twitter
              13 février 2014 à 13:09:54

              package pro.config;
              
              import javax.servlet.ServletContext;
              import javax.servlet.ServletContextEvent;
              import javax.servlet.ServletContextListener;
              
              import pro.dao.DAOFactory;
              
              public class InitialisationDaoFactory implements ServletContextListener {
                  private static final String ATT_DAO_FACTORY = "daofactory";
              
                  private DAOFactory          daoFactory;
              
                  @Override
                  public void contextInitialized( ServletContextEvent event ) {
                      ServletContext servletContext = event.getServletContext();
                      this.daoFactory = DAOFactory.getInstance();
                      servletContext.setAttribute( ATT_DAO_FACTORY, this.daoFactory );
                  }
              
                  @Override
                  public void contextDestroyed( ServletContextEvent event ) {
                   }
              }

              "herbicide" j'ai relu les pages 418 et 419 ... mais rien de nouveau.
              et merci pour votre aide.

              J'attends vos réponses. Merci
               

              -
              Edité par osso045 14 février 2014 à 18:06:44

              • Partager sur Facebook
              • Partager sur Twitter
                19 février 2014 à 16:55:56

                un petit up parce que j'ai exactement le même problème ! J'ai même essayé de mettre le .jar du driver directement dans le projet mais toujours l'erreur !

                Edit

                Et je viens de voir que tu as mis le sujet résolu... tu as réussi? tu as fait comment?

                -
                Edité par tynagmo 19 février 2014 à 16:56:57

                • Partager sur Facebook
                • Partager sur Twitter
                TyИagmØ     "Yesterday I was clever, so I wanted to change the world. Today I am wise, so I am changing myself"
                  19 février 2014 à 17:24:26

                  Yop,

                  Soit vous avez merdé dans votre fichier .properties, soit vous avec merdé dans votre listener.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 février 2014 à 18:02:58

                    Coyote a écrit:

                    Yop,

                    Soit vous avez merdé dans votre fichier .properties, soit vous avec merdé dans votre listener.


                    euh, j'ai relu les fichiers 40 fois . ça me parait compliquer de se tromper dans le fichier .properties qui fait 4 lignes et pour le listener j'ai pris le même code que dans ton cours en l'adaptant à mes noms de packages ...
                    • Partager sur Facebook
                    • Partager sur Twitter
                    TyИagmØ     "Yesterday I was clever, so I wanted to change the world. Today I am wise, so I am changing myself"
                      19 février 2014 à 19:50:45

                      Il y a une erreur dans le code du tutoriel. + mon problème n'est pas résolu ... juste j'ai laissé tomber
                      • Partager sur Facebook
                      • Partager sur Twitter
                        20 février 2014 à 16:28:55

                        Le problème vient surement du fichier properties qui n'est pas lu. Essayez de rentrer les informations des variables url, driver, ... directement dans la class DAOFactory.

                        Cdt

                        • Partager sur Facebook
                        • Partager sur Twitter
                          20 février 2014 à 21:23:47

                          osso045 a écrit:

                          Il y a une erreur dans le code du tutoriel.

                          Non, tout fonctionne et a été validé et revalidé à maintes reprises.

                          • Partager sur Facebook
                          • Partager sur Twitter
                            20 février 2014 à 21:26:28

                            tynagmo a écrit:

                            euh, j'ai relu les fichiers 40 fois . ça me parait compliquer de se tromper dans le fichier .properties qui fait 4 lignes et pour le listener j'ai pris le même code que dans ton cours en l'adaptant à mes noms de packages ...

                            Tu peux t'être trompé dans l'emplacement du fichier, dans le chemin que tu as spécifié dans le code pour joindre ce fichier, etc. Quoi qu'il en soit, le code du cours... fonctionne. :)

                            • Partager sur Facebook
                            • Partager sur Twitter
                              22 février 2014 à 14:47:29

                              Coyote.
                              Peux-tu m'aider à inclure la facelet (login.xhtml) dans ton code de la partie "La gestion d'un formulaire avec JSF" S.T.P.
                              Le code de cette partie qui inscrit un nouveau utilisateur fonctionne bien mais je n'arrive pas à ajouter une nouvelle facelet pour la connexion d'un utilisateur (login.xhtml).

                              j'attends ta réponse

                              merci d'avance. 

                              • Partager sur Facebook
                              • Partager sur Twitter
                                24 février 2014 à 9:49:41

                                Crée un message à part dans le forum, cette question est différente du sujet actuel.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  11 septembre 2014 à 16:24:36

                                  Bonjour, je fais un petit up sur ce thread. De mon coté j'avais 2 problèmes par rapport au tuto. J'ai placé, comme ce dernier le précise le fichier properties dans WEB-INF. Cependant j'obtenais un "DAOConfigurationException: Le fichier properties /data/dao.properties est introuvable." 

                                  J'ai créé un dossier "classes" sous WEB-INF et j'y est placé le fichier properties pour ne plus avoir cette erreur.

                                  J'ai cependant encore un ClassNotFoundException sur dao.InitialisationDaoFactory.

                                  Voici mon fichier web.xml

                                  <listener>
                                  <listener-class>dao.InitialisationDaoFactory</listener-class>
                                  </listener>

                                  Le nom du package est bien dao dans mon projet. Merci de votre aide !

                                  -
                                  Edité par sispheor 11 septembre 2014 à 16:46:43

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    18 janvier 2018 à 20:28:12

                                    Pour info, j'avais aussi cette erreur, et je l'ai corrigé en supprimant les "blancs" et espace qu'il y avait dans mon fichier dao.properties. En faisnt un copé/coller, il y avait des espaces de partout, j'ai tout bien indenté à gauche et plus de soucis.
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Corriger un message d'erreur (JAVA EE)

                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                    • Editeur
                                    • Markdown