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 :

javax.servlet.ServletException: Cannot open connection


Sujet :

Tomcat et TomEE Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 22
    Par défaut javax.servlet.ServletException: Cannot open connection
    Bonjour,
    Je vous envoie ce message car j'ai un problème de configuration du pool de connexion de Tomcat avec hibernate.

    Jusqu'à présent j'ai réussi à me connecter à ma base de données en utilisant le pool de connexion d'hibernate et en définissant directement dans le fichier de conf d'hibernate les données de connexion.

    Seulement pour respecter les normes que l'on m'a imposées, je dois exporter ces infos directement dans le fichier de configuration du conteneur de servlets (Tomcat) et utiliser le pool de connexion de ce dernier.

    Environnement de développement :

    - Base de données Oracle 10 g
    - Hibernate 3.1.3
    - Tomcat 5.0.28

    La structure du projet est la suivante :

    Les différents projets utilisés sont générés grâce à maven 2.

    gcs-client : c'est la webapp
    - src/main/webapp/WEB-INF/web.xml

    gcs-dataaccess : couche de données
    - src/main/java/ -> contient les sources et les notamment le fichier
    hibernate.cfg.xml

    gcs-business : couche métier


    Ce que j'ai fait jusqu'à présent :

    - J'ai commencé par déposer les drivers de connexion à la base de données dans le répertoire /common/lib de Tomcat.

    - J'ai modifié ensuite le fichier server.xml 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
     
    <GlobalNamingResources>
    ...
    <Resource name="jdbc/storeDB" auth="Container"
       type="javax.sql.DataSource" 
       username="userQuiVaBien"
       password="passwordQuiVaBien"
       driverClassName="oracle.jdbc.driver.OracleDriver"   url="jdbc:oracle:thin:@serveurQuiVaBien:PortQuiVaBien:InstanceDoracleQuiVaBien" 
       maxActive="8"
       maxIdle="4" />
     
    ...
    </GlobalNamingResources>
    ...
    <Context docBase="gcs-client" 
                  path="/gcs-client"
                  reloadable="true"
                  source="org.eclipse.jst.j2ee.server:gcs-client" />
    - J'ai modifié le fichier hibernate.cfg.xml

    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-configuration
        PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
        "//psd216/COMPOSANTS-CNP1/hibernate/dtds/hibernate-configuration-3.0.dtd">
     
    <hibernate-configuration>
    	<session-factory name="GCS_SessionFactory">
    		<!-- Utilisation d'une connexion via une DataSource définie au niveau de la conf
    			 du serveur d'application ou conteneur de servlets -->
     
    		<property name="connection.datasource">java:/comp/env/jdbc/storeDB</property>
    		<property name="show_sql">true</property>
    		<property name="dialect">org.hibernate.dialect.OracleDialect</property>
    		<property name="hibernate.transaction.factory_class">
    			org.hibernate.transaction.JDBCTransactionFactory
    		</property>
     
    		<!-- Il serait intéressant de définir le mapping dans un fichier externe -->
    		<mapping resource="GcsCategorieAffaire.hbm.xml" />
    		<mapping resource="GcsClient.hbm.xml" />
    		<mapping resource="GcsCodeProduit.hbm.xml" />
    		<mapping resource="GcsCodeSouscription.hbm.xml" />
    		<mapping resource="GcsContrat.hbm.xml" />
    		<mapping resource="GcsEtatAffaire.hbm.xml" />
    		<mapping resource="GcsInfosComplementaires.hbm.xml" />
    		<mapping resource="GcsNatureActivite.hbm.xml" />
    		<mapping resource="GcsNatureLot.hbm.xml" />
    		<mapping resource="GcsPersonnePhysique.hbm.xml" />
    		<mapping resource="GcsPosteComptable.hbm.xml" />
    		<mapping resource="GcsPrioriteLot.hbm.xml" />
    		<mapping resource="GcsProduit.hbm.xml" />
    		<mapping resource="GcsReseau.hbm.xml" />
    		<mapping resource="GcsRole.hbm.xml" />
    		<mapping resource="GcsRoleIntervenant.hbm.xml" />
    		<mapping resource="GcsSi.hbm.xml" />
    		<mapping resource="GcsSiteNumerisation.hbm.xml" />
    		<mapping resource="GcsTypeAffaire.hbm.xml" />
    		<mapping resource="GcsTypeArchivage.hbm.xml" />
    		<mapping resource="GcsTypeDocument.hbm.xml" />
    		<mapping resource="GcsTypeEvenement.hbm.xml" />
    	</session-factory>	
    </hibernate-configuration>
    j'ai ajouté dans le fichier web.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <resource-ref> 
    	<description>Connexion à la base de données.</description> 
    	<res-ref-name>jdbc/storeDB</res-ref-name> 
    	<res-type>javax.sql.DataSource</res-type> 
    	<res-auth>Container</res-auth> 
      </resource-ref>
    Voila le message qui s'affiche dans la console d'Eclipse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    INFO fr.cnp.gcs.hibernate.util.HibernateFinder 2008-02-08 09:08:38,066 - find HQL = from GcsContrat fetch all properties where NumeroContrat like '%16303773302%' 
    WARN org.hibernate.util.JDBCExceptionReporter 2008-02-08 09:08:38,332 - SQL Error: 0, SQLState: null 
    ERROR org.hibernate.util.JDBCExceptionReporter 2008-02-08 09:08:38,332 - Cannot create JDBC driver of class '' for connect URL 'null' 
    WARN org.apache.struts.action.RequestProcessor 2008-02-08 09:08:38,332 - Unhandled Exception thrown: class org.hibernate.exception.GenericJDBCException
    Dans la page JSP :

    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
     
    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 
     
    javax.servlet.ServletException: Cannot open connection
    	org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
    	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
     
     
    cause mère 
     
    org.hibernate.exception.GenericJDBCException: Cannot open connection
    	org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
    	org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
    	org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
    	org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
    	org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:420)
    	org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
    	org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:105)
    	org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1561)
    	org.hibernate.loader.Loader.doQuery(Loader.java:661)
    	org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
    	org.hibernate.loader.Loader.doList(Loader.java:2145)
    	org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
    	org.hibernate.loader.Loader.list(Loader.java:2024)
    	org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
    	org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:308)
    	org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153)
    	org.hibernate.impl.SessionImpl.list(SessionImpl.java:1106)
    	org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
    	fr.cnp.gcs.hibernate.util.HibernateFinder.find(HibernateFinder.java:34)
    	fr.cnp.gcs.model.business.assure.AssureManager.searchAssureByNumeroContrat(AssureManager.java:106)
    	fr.cnp.gcs.controller.action.search.SearchAction.execute(SearchAction.java:71)
    	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    	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.0.28.
     
     
     
    Apache Tomcat/5.0.28
    Si vous pouviez me donner des pistes ca serait pas de refus.
    Merci d'avance.
    Nono

  2. #2
    Expert éminent
    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 : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Essaie en déplacant ta ressource dans le context, plutot que de la mettre en global :/

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2005
    Messages : 7
    Par défaut erreur de connexion
    J'avais le même problème, j'avais les erreurs suivantes :
    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
     
    org.hibernate.exception.GenericJDBCException: Cannot open connection
    Cause by : Caused by: java.sql.SQLException: Connections could not be acquired from the underlying database!
            at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106)
            at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:529)
            at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128)
            at org.hibernate.connection.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:56)
            at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
            ... 14 more
    Caused by: com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.
            at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1319)
            at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:557)
            at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:477)
            at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:525)
            ... 17 more
    J'avais inversé le mot de passe et l'identifiant de connexion à la base

Discussions similaires

  1. Réponses: 8
    Dernier message: 05/11/2011, 15h53
  2. struts erreur javax.servlet.ServletException
    Par catherine* dans le forum Struts 1
    Réponses: 2
    Dernier message: 30/08/2007, 08h50
  3. Cannot open connection JDBC
    Par lili2704 dans le forum Weblogic
    Réponses: 2
    Dernier message: 14/03/2007, 14h15
  4. Réponses: 7
    Dernier message: 19/07/2006, 14h43
  5. [SERVLET]javax.servlet.ServletException
    Par Devil666 dans le forum Servlets/JSP
    Réponses: 13
    Dernier message: 10/06/2005, 11h50

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