gpt4 book ai didi

spring - 配置 Hibernate C3P0 连接池

转载 作者:行者123 更新时间:2023-12-02 08:24:59 24 4
gpt4 key购买 nike

我在使用 Spring 和 Hibernate 开发基于 Struts2 的 Web 应用程序时偶然发现了一个问题。

当我刷新站点几次(例如 2-4 次)时,Hibernate 显示有关连接过多的异常。我尝试过实现 C3P0 连接池,但遇到了一些问题

<小时/>

hibernate.cfg.xml配置:

<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>

日志输出为:

org.hibernate.exception.JDBCConnectionException: Cannot open connection

和:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection,  message from server: "Too many connections"

这就是 PROCESSLIST MySQL 窗口的样子:http://img844.imageshack.us/img844/3959/be69273cc2.png

<小时/>

我已将连接的ma​​x_size设置为20,但似乎它没有从文件中读取C3P0配置,因为从屏幕上我们可以看到连接数高于20 ,或者也许我做错了什么,但错在哪里?我真的需要一些帮助,我会很感激,并提前致谢。

最佳答案

在 hibernate.cfg.xml 文件中提及这些属性

    <property name="hibernate.c3p0.acquire_increment">1</property>
<property name="hibernate.c3p0.idle_test_period">100</property>
<property name="hibernate.c3p0.max_size">10</property>
<property name="hibernate.c3p0.max_statements">10</property>
<property name="hibernate.c3p0.min_size">10</property>
<property name="hibernate.c3p0.timeout">100</property>

请参阅此链接以更好地理解:Configuration Properties

关于spring - 配置 Hibernate C3P0 连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17062486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com