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

Tomcat et TomEE Java Discussion :

Problème de drivers classe12.jar ojdbc14.jar dans WEB-INF/lib


Sujet :

Tomcat et TomEE Java

  1. #1
    Invité
    Invité(e)
    Par défaut Problème de drivers classe12.jar ojdbc14.jar dans WEB-INF/lib
    Bonjour.

    Au travail, nous utilisons Tomcat.
    Les applis se connectent à Oracle.

    Nous essayons de remettre toutes les bibliothèques utilisées dans les dossiers <appli>/WEB-INF/lib pour éviter de les mettre dans <tomcat>/common/lib/

    Pour l'ensemble des bibliothèques, il n'y a pas de problème, sauf pour les pilotes JDBC. En effet, la connexion à la base (sans changer le code java) ne marche que si le fichier classe12.jar ou ojdbc14.jar est dans le dossier common/lib de Tomcat.

    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
    Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'
    org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'
    	at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1136)
    	at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
    	at pah.gestdu.util.ConnexionBase.getConnection(ConnexionBase.java:84)
    	at pah.gestdu.util.ConnexionBase.<init>(ConnexionBase.java:44)
    	at pah.gestdu.servlet.ConnecterCommande.execute(ConnecterCommande.java:46)
    	at pah.gestdu.servlet.GestDUControleur.service(GestDUControleur.java:103)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873)
    	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    	at java.lang.Thread.run(Thread.java:662)
    Caused by: java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
    	at java.net.URLClassLoader$1.run(URLClassLoader.java:202)

    Y-a-t-il une raison?

    Merci d'avance.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Quelle version de java utilisez vous? Si vous êtes en java 5 utilisez ojdbc15 et en java6 ojdbc16.

    Ensuite, un seul des deux drivers, pas classes12 et ojdbc.

    Enfin, pour le ClassNotFoundException, il faut savoir comment est configurée votre application? C'est une datasource sur jndi? Si oui, c'est le classloader system de Tomcat qui instancie ça, si ma mémoire est bonne, pas le classloader de la webapp, il ne voit donc pas WEB-INF/lib.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour.

    L'application est actuellement en java 1.4, mais passera en 1.6 suite à un changement de serveur.

    En 1.4, nous utilisons classes12.
    En 1.6, je ne sais pas quel jar nous allons utilisons utiliser mais classes12 fonctionne aussi. Y-a-t-il des différences de performance?

    Concernant, la connexion, la classe de connexion fait :
    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
     
     Context ctx = new InitialContext();
                        if(ctx == null ) throw new Exception("context initial null");
                        Context envContext  = (Context)ctx.lookup("java:/comp/env");
                        DataSource ds = (DataSource)envContext.lookup("jdbc/basegestdu");
     
                        if (ds != null)
                        {
                              conn = ds.getConnection();
                              if (conn==null)
                              {
                                    throw new Exception("connexion nulle");
                              }
     
                              nbProcessus++;
                        }
                        else 
                        {
                             throw new Exception("DataSource null");
                        }

    Dans le WEB-INF/web.xml, nous avons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      <resource-ref>
       <description>GESTDU Datasource</description>
       <res-ref-name>jdbc/basegestdu</res-ref-name>
       <res-type>javax.sql.DataSource</res-type>
       <res-auth>Container</res-auth>
      </resource-ref>
    Dans le fichier de contexte, nous avons :

    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
     
    <Resource name="jdbc/basegestdu" auth="Container"
    	 type="javax.sql.DataSource"/>
     
    	<ResourceParams name="jdbc/basegestdu">
    		<parameter>
      			<name>factory</name>
      	     <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
     		</parameter>
     		<parameter>
      			<name>driverClassName</name>
      			<value>oracle.jdbc.driver.OracleDriver</value>
     		</parameter>
     		<parameter>
      			<name>url</name>
        			<value>jdbc:oracle:thin:@176.1.1.2:1521:BASE</value>
     		</parameter>
     		<parameter>
    	  		<name>username</name>
      			<value>user</value>
      		</parameter>
      		<parameter>
    	   		<name>password</name>
    	   		<value>mdp</value>
      		</parameter>
      		<parameter>
       			<name>maxActive</name>
       			<value>10</value>
      		</parameter>
      		<parameter>
        			<name>maxIdle</name>
        			<value>5</value>
     		</parameter>
      		<parameter>
       			<name>maxWait</name>
      			<value>-1</value>
      		</parameter>
    		<parameter>
    			<name>removeAbandoned</name>
    			<value>true</value>
    		</parameter>
    		<parameter>
                	<name>removeAbandonedTimeout</name>
                	<value>90</value>
                </parameter> 
    		<parameter>
    			<name>validationQuery</name>
    			<value>select * from gdu_bloquant</value>
    		</parameter>
     
    	</ResourceParams>
    Cdt.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Que je sache vous ne pouvez pas mettre les driver dans WEB-INF/lib pour ce qui est du contexte.


    classes12 est surtout destiné à java 1.2/1.3, alors qu'en java 1.4 il vaudrait mieux utiliser ojdbc14 si vous voulez pouvoir profiter de toutes l'api JDBC de java 1.4 et non pas de certaines fonctionnalités.

    Le numéro dans les driver oracle correspond à la version de java auquel il est destiné, pas à la version du driver

Discussions similaires

  1. Mettre à jour un fichier jar dans WEB-INF\lib
    Par sitirna dans le forum Développement Web en Java
    Réponses: 9
    Dernier message: 24/08/2011, 16h45
  2. Réponses: 5
    Dernier message: 07/06/2011, 13h27
  3. Les jar dans WEB-INF/lib non reconnus
    Par aminweb007 dans le forum Maven
    Réponses: 6
    Dernier message: 27/04/2011, 11h01
  4. Inclure lib dans web-INF/lib
    Par goldonly04 dans le forum Build
    Réponses: 1
    Dernier message: 08/02/2011, 14h51
  5. pb deploiment JAR multiple dans WEB-INF/lib
    Par pcouas dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 01/05/2008, 11h04

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