c3p0和jdbctemplate配置oracle集群rac,使用JDBCTemplate和c3p0的繁忙连接太多

我正在开发一个使用Spring,JDBCTemplate和c3p0访问数据库的Web应用程序。使用JDBCTemplate和c3p0的繁忙连接太多

我经常有一个服务器冻结,我很确定它来自繁忙的数据库连接的数量。如果我使用jconsole来观察应用程序的行为,我可以看到已达到ComboPooledDataSource的maxPoolSize,并且服务器不再加载页面。

这里是有用的代码:

数据源定义:

driverClass="org.postgresql.Driver"

maxPoolSize="16"

minPoolSize="1"

acquireIncrement="1"

maxIdleTime="60"

maxStatements="0"

idleConnectionTestPeriod="1800"

acquireRetryAttempts="30"

breakAfterAcquireFailure="true"

name="jdbc/gdlweb"

user="gdlweb"

password=""

factory="org.apache.naming.factory.BeanFactory"

type="com.mchange.v2.c3p0.ComboPooledDataSource"

jdbcUrl="jdbc:postgresql://localhost:5432/postgres"

/>

典型接入方法(在DAO类):

protected T getPersistentObject(

final String tableName,

final List whereParams,

final RowMapper rowMapper) {

try {

log.debug(this, "get " + tableName + " " + whereParams);

return (T) getTemplate().queryForObject(

generateSelectStar(tableName, whereParams),

extractValueMap(whereParams),

rowMapper);

} catch (final EmptyResultDataAccessException e) {

log.warning(this, "No " + tableName + " found with " + whereParams + " in the DB!");

return null;

}

}

我试图增加maxPoolSize至100 ,这是我的postgresql服务器中定义的maxConnections。这样,我可以看到,在postgresql服务器崩溃之前,当前有43个忙连接被打开。

我可能使用错误的方式使用JDBCTemplate,但我不知道在哪里。

谢谢。

2011-07-27

Thierry

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!关于Spring中配置c3p0和MySQL数据源的问题,可以参考以下步骤进行配置: 1. 在pom.xml中添加相关依赖: ``` <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> </dependency> ``` 2. 在Spring配置文件中配置数据源: ``` <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="com.mysql.cj.jdbc.Driver" /> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test" /> <property name="user" value="root" /> <property name="password" value="123456" /> <property name="maxPoolSize" value="30" /> <property name="minPoolSize" value="10" /> <property name="initialPoolSize" value="10" /> <property name="maxIdleTime" value="1800" /> <property name="acquireIncrement" value="3" /> </bean> ``` 其中,`driverClass`为MySQL的JDBC驱动类,`jdbcUrl`为数据库连接URL,`user`和`password`为数据库用户名和密码,`maxPoolSize`为最大连接数,`minPoolSize`为最小连接数,`initialPoolSize`为初始连接数,`maxIdleTime`为最大空闲时间,`acquireIncrement`为每次获取连接时增加的连接数。 3. 在DAO层中使用数据源: ``` @Repository public class UserDaoImpl implements UserDao { @Autowired private DataSource dataSource; private JdbcTemplate jdbcTemplate; @PostConstruct public void init() { jdbcTemplate = new JdbcTemplate(dataSource); } // 接下来可以使用jdbcTemplate执行SQL操作 // ... } ``` 以上是一个基本的配置示例,具体根据自己的需求进行调整。希望能够帮到你!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值