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

Hibernate Java Discussion :

Hibernate et pool de connexion Tomcat


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    370
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 370
    Par défaut Hibernate et pool de connexion Tomcat
    Je n'arrive pas à configurer Hibernate pour qu'il prenne en compte les connexion d'un pool DBCP géré par Tomcat :

    Voici lmon fichier context.xml dans le dossier META-INF de mon projet :
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
     
    <Context path="/transfertFichier" 
    	reloadable="true" 
    	docBase="\TransfertFichier" >
    	<Resource
    		name="jdbc/transfertFichier"
    		auth="Container"
    		type="javax.sql.DataSource"/>
    	<ResourceParams name="jdbc/TutoPool">
    		<parameter>
    			<name>username</name>
    			<value>postgres</value>
    	 	</parameter>
    		<parameter>
    			<name>password</name>
    			<value>p1i2e3*</value>
    		</parameter>
    	 	<parameter>
    			<name>driverClassName</name>
    			<value>org.postgresql.Driver</value>
    	 	</parameter>
    		<parameter>
    			<name>url</name>
    			<value>jdbc:postgresql://localhost:5432/transfert</value>
    		</parameter>
    		<parameter>
    		<name>maxActive</name>
    		<value>20</value>
    	</parameter>
    	<parameter>
    		<name>maxIdle</name>
    		<value>10</value>
    	</parameter>
    	<parameter>
    		<name>maxWait</name>
    		<value>10000</value>
    	</parameter>
    	<parameter>
    		<name>validationQuery</name>
    		<value>select 1</value>
    	</parameter>
    	<parameter>
    		<name>removeAbandoned</name>
    		<value>true</value>
    	</parameter>
    	<parameter>
    		<name>removeAbandonedTimeout</name>
    		<value>20</value>
    	</parameter>
    	<parameter>
    		<name>logAbandoned</name>
    		<value>true</value>
    	</parameter>
    	</ResourceParams>		 
    </Context>
    LA declaration de la ressource dans le web.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <resource-ref>
    		<description>
    			reference a la ressource BDD pour le pool
    		</description>
    		<res-ref-name>jdbc/transfertFichier</res-ref-name>
    		<res-type>javax.sql.DataSource</res-type>
    		<res-auth>Container</res-auth>
    		<res-sharing-scope>Shareable</res-sharing-scope>
    	</resource-ref>
    et la configuration dans Hibernate :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <property name="connection.datasource">java:comp/env/jdbc/transfertFichier</property>
    		<!-- dialect for PostgreSQL -->
        	<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
    Au lancement d'hibernate je me prend la (longue liste) exceptions suivante :
    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
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
     
    26 juil. 2006 13:51:10 org.hibernate.connection.DatasourceConnectionProvider configure
    INFO: Using datasource: java:comp/env/jdbc/transfertFichier
    26 juil. 2006 13:51:10 org.hibernate.cfg.SettingsFactory buildSettings
    ATTENTION: Could not obtain connection metadata
    org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
    	at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:780)
    	at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
    	at org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:69)
    	at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:72)
    	at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1881)
    	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1174)
    	at persistance.HibernateUtil.<clinit>(HibernateUtil.java:13)
    	at persistance.HibernateManager.startSession(HibernateManager.java:155)
    	at metier.GestionUser.logUser(GestionUser.java:371)
    	at controleur.ServletPrinc.login(ServletPrinc.java:365)
    	at controleur.ServletPrinc.doPost(ServletPrinc.java:154)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    	at java.lang.Thread.run(Unknown Source)
    Caused by: java.lang.NullPointerException
    	at sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(Unknown Source)
    	at sun.jdbc.odbc.JdbcOdbcDriver.knownURL(Unknown Source)
    	at sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(Unknown Source)
    	at java.sql.DriverManager.getDriver(Unknown Source)
    	at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:773)
    	... 26 more
    26 juil. 2006 13:51:10 org.hibernate.dialect.Dialect <init>
    INFO: Using dialect: org.hibernate.dialect.PostgreSQLDialect
    26 juil. 2006 13:51:10 org.hibernate.transaction.TransactionFactoryFactory buildTransactionFactory
    INFO: Transaction strategy: org.hibernate.transaction.JDBCTransactionFactory
    26 juil. 2006 13:51:10 org.hibernate.transaction.TransactionManagerLookupFactory getTransactionManagerLookup
    INFO: No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
    26 juil. 2006 13:51:10 org.hibernate.cfg.SettingsFactory buildSettings
    INFO: Automatic flush during beforeCompletion(): disabled
    26 juil. 2006 13:51:10 org.hibernate.cfg.SettingsFactory buildSettings
    INFO: Automatic session close at end of transaction: disabled
    26 juil. 2006 13:51:10 org.hibernate.cfg.SettingsFactory buildSettings
    INFO: Scrollable result sets: disabled
    26 juil. 2006 13:51:10 org.hibernate.cfg.SettingsFactory buildSettings
    INFO: JDBC3 getGeneratedKeys(): disabled
    26 juil. 2006 13:51:10 org.hibernate.cfg.SettingsFactory buildSettings
    INFO: Connection release mode: auto
    26 juil. 2006 13:51:10 org.hibernate.cfg.SettingsFactory buildSettings
    INFO: Default batch fetch size: 1
    26 juil. 2006 13:51:10 org.hibernate.cfg.SettingsFactory buildSettings
    INFO: Generate SQL with comments: disabled
    26 juil. 2006 13:51:10 org.hibernate.cfg.SettingsFactory buildSettings
    INFO: Order SQL updates by primary key: disabled
    26 juil. 2006 13:51:10 org.hibernate.cfg.SettingsFactory createQueryTranslatorFactory
    INFO: Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
    26 juil. 2006 13:51:10 org.hibernate.hql.ast.ASTQueryTranslatorFactory <init>
    INFO: Using ASTQueryTranslatorFactory
    26 juil. 2006 13:51:10 org.hibernate.cfg.SettingsFactory buildSettings
    INFO: Query language substitutions: {}
    26 juil. 2006 13:51:10 org.hibernate.cfg.SettingsFactory buildSettings
    INFO: Second-level cache: enabled
    26 juil. 2006 13:51:10 org.hibernate.cfg.SettingsFactory buildSettings
    INFO: Query cache: disabled
    26 juil. 2006 13:51:10 org.hibernate.cfg.SettingsFactory createCacheProvider
    INFO: Cache provider: org.hibernate.cache.EhCacheProvider
    26 juil. 2006 13:51:10 org.hibernate.cfg.SettingsFactory buildSettings
    INFO: Optimize cache for minimal puts: disabled
    26 juil. 2006 13:51:10 org.hibernate.cfg.SettingsFactory buildSettings
    INFO: Structured second-level cache entries: disabled
    26 juil. 2006 13:51:10 org.hibernate.cfg.SettingsFactory buildSettings
    INFO: Echoing all SQL to stdout
    26 juil. 2006 13:51:10 org.hibernate.cfg.SettingsFactory buildSettings
    INFO: Statistics: disabled
    26 juil. 2006 13:51:10 org.hibernate.cfg.SettingsFactory buildSettings
    INFO: Deleted entity synthetic identifier rollback: disabled
    26 juil. 2006 13:51:10 org.hibernate.cfg.SettingsFactory buildSettings
    INFO: Default entity-mode: pojo
    26 juil. 2006 13:51:10 org.hibernate.impl.SessionFactoryImpl <init>
    INFO: building session factory
    26 juil. 2006 13:51:13 org.hibernate.impl.SessionFactoryObjectFactory addInstance
    INFO: Not binding factory to JNDI, no JNDI name configured
    26 juil. 2006 13:51:14 org.hibernate.util.JDBCExceptionReporter logExceptions
    ATTENTION: SQL Error: 0, SQLState: null
    26 juil. 2006 13:51:14 org.hibernate.util.JDBCExceptionReporter logExceptions
    GRAVE: Cannot create JDBC driver of class '' for connect URL 'null'
    org.hibernate.exception.GenericJDBCException: Cannot open connection
    	at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
    	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
    	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
    	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
    	at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:420)
    	at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
    	at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:129)
    	at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
    	at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1290)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:301)
    	at $Proxy0.beginTransaction(Unknown Source)
    	at persistance.HibernateManager.startTransaction(HibernateManager.java:162)
    	at metier.GestionUser.logUser(GestionUser.java:372)
    	at controleur.ServletPrinc.login(ServletPrinc.java:365)
    	at controleur.ServletPrinc.doPost(ServletPrinc.java:154)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    	at java.lang.Thread.run(Unknown Source)
    Caused by: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
    	at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:780)
    	at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
    	at org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:69)
    	at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:417)
    	... 30 more
    Caused by: java.lang.NullPointerException
    	at sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(Unknown Source)
    	at sun.jdbc.odbc.JdbcOdbcDriver.knownURL(Unknown Source)
    	at sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(Unknown Source)
    	at java.sql.DriverManager.getDriver(Unknown Source)
    	at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:773)
    	... 33 more
    Il semble qu'il ne trouve pas mon driver, ni l'Url de connexion ...

  2. #2
    Membre émérite Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Par défaut
    Hum tu sembles bien trouver le problème : il ne trouve pas la datasource...
    Reste à le résoudre.

    Juste quelques questions :
    - c'est quoi ce java:comp ?!? --> Tu spécifies un pool java ?!?
    - Pourquoi via Tomcat et non directement géré par Hibernate ? Trop facile ?

  3. #3
    Membre averti
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 18
    Par défaut Tomcat plutôt que hibernate.
    Je crois que c'est un problème récurrent chez tomcat. L'utilisation du pool de connexion est problématique. Qu'on utilise hibernate ou pas !
    Donc c'est un pb Tomcat et non un pb Hibernate. Rends toi sur les forums tomcat plutôt que les forums hibernate. Tu trouveras forcément la solution.

    Quelle est la version de tomcat utilisée ? 4.1.x ? ou 5.0 ? ou 5.5 ?
    Vérifie que le driver jdbc est situé dans ton tomcat/common/lib.

    Ecris une petite servlet de test permettant de faire le test de récupération de ta resource JNDI.

    Cordialement,

    PS : l'utilisation du pool hibernate peut être judicieuse... quel pourrait être l'intéret d'utiliser le pool apache ?

  4. #4
    Membre averti
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 18
    Par défaut
    A noter que ta conf semble être erronée, non ?

    C'est
    "jdbc/transfertFichier"
    ou
    "jdbc/TutoPool"

    comprends pas

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    370
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 370
    Par défaut
    Erf alors, c'est vrai que je ne sais pas pourquoi je me prends le chou avec les connexion poolé par tomcat ...
    Je m'étais dis tiens autant que le conteneur de servlet gère cela vu que l'ensemble de l'application est contenu par lui.

    Maintenant, vu la mouise que c'est à configuré, si vous dite que cela irais tout aussi bien avec un pool géré seulement par Hibernate, je ne vais pas me prendre la tête longtps la dessus ...

    Sinon c'est Tomcat 5.5, c'est pour cela que je n'ai pas fait la config dans le server.xml mais dans un fichier context.xml relatif à l'appli. J'ai aussi mis le driver dans le common/lib ...

  6. #6
    Membre émérite Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Par défaut
    Ah cool !
    par contre, comme je l'ai déjà dit aujourd'"hui sur un autre post, évite le pool d'Hibernate qui n'est pas préconisé pour les "vrais développements". Il est seulement là "par défaut". Préfères un pool C3P0, DBCP ou Proxool disponibles dans les outils java de DVP. Ils sont, en outre totalement configurables (et de manière aisée) avec Hibernate (cf. documentation Hibernate pour C3P0 ou site web de chacun ou site web d'Hibernate)

    Bon courage

Discussions similaires

  1. hibernate et pool de connection tomcat
    Par pcouas dans le forum Hibernate
    Réponses: 1
    Dernier message: 29/05/2009, 08h38
  2. Problème de pool de connexion Tomcat
    Par xfacq dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 04/03/2007, 17h11
  3. Pool de connexion - Tomcat
    Par chennuo dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 28/11/2006, 16h42
  4. [TOMCAT] pool de connexion postgres
    Par kitov dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 04/06/2004, 16h13
  5. [tomcat 4.1] [oracle] Pool de connexion
    Par Franco dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 23/09/2003, 00h42

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