Configurer Hibernate C3P0 le Regroupement de Connexion
Je suis tombé sur un problème tout en développant une Application Web basée sur Struts2 avec Spring et Hibernate.
Lorsque j'actualise le site un peu de temps, par exemple de 2 à 4 fois, Hibernate est montrant une exception sur Trop grand nombre de connexions. J'ai essayé de mettre en œuvre C3P0 pool de Connexion et d'avoir quelques problèmes avec elle
La hibernate.cfg.xml configuration:
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/axelle</property>
<property name="hibernate.connection.username">axelle</property>
<property name="hibernate.connection.password">dbpassword</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.timeout">300</property>
<property name="hibernate.c3p0.max_statements">50</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
applicationContext.xml
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="classpath:jdbc.properties"/>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
p:driverClassName="${jdbc.driverClassName}"
p:url="${jdbc.url}"
p:username="${jdbc.username}"
p:password="${jdbc.password}"
p:connectionProperties="${jdbc.connectionProperties}"/>
<!-- ADD PERSISTENCE SUPPORT HERE (jpa, hibernate, etc) -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
<!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
La sortie du journal est:
org.hibernate.exception.JDBCConnectionException: Cannot open connection
et:
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connections"
Et c'est de cette façon PROCESSLIST MySQL fenêtre donne: http://img844.imageshack.us/img844/3959/be69273cc2.png
J'ai mis max_size de connexions à 20, mais il me semble qu'il ne lit pas les C3P0 un fichier de configuration, la cause de l'écran, nous pouvons voir que le nombre de connexions est supérieur à 20, ou peut-être que je suis en train de faire quelque chose de mal, mais où? J'ai vraiment besoin d'aide les gars, je vais apprécier ce, et merci d'avance.
Désolé, mais c'est la première fois lorsque j'essaie de mettre en œuvre un pool de Connexion, peut vous conseiller, comment j'ai besoin de la fermer? mais de toute façon je suis en train de fermer toutes les sessions, après l'interrogation de la base de données avec
transaction.commit();
session.flush();
session.close();
.Pourquoi pensez-vous que c3p0 est votre fournisseur de connexion?
Il vous manque
connection.provider_class
de la propriété.J'ai lu sur DBCP et C3P0 et de la pensée que C3P0 est parfait pour moi.
OriginalL'auteur Denees | 2013-06-12
Vous devez vous connecter pour publier un commentaire.
Parler de ces biens dans votre hibernate.cfg.xml fichier
Consulter ce lien pour mieux comprendre: Propriétés De Configuration
OriginalL'auteur pudaykiran
Dans votre applicationContext, au lieu d'utiliser
<bean id="dataSource"
essayez d'utiliserclass="org.springframework.jdbc.datasource.DriverManagerDataSource" ...
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" ...
Le C3P0PooledDataSource permettra de créer un enveloppé de connexion de base de données à l'aide des DriverClassName, url, nom d'utilisateur et le mot de passe
OriginalL'auteur Kristiaan