关于java通过proxool连接数据库多数据源的问题

公司一直是处理大数据这个方面,对数据库操作频繁在所难免,关于数据库连接方式换了很多,各有优缺点,具体就不在这解释了。

之前一直在用C3P0创建数据源,但C3P0占用资源不能及时的释放,导致数据库连接数经常抛出警告信息(被锁死),虽然不影响运行,但这样下去也不是办法,所以决定换个数据源方式,通过proxool创建数据源。

其他配置不许改变,只是需要改下配置数据源信息即可

<span style="font-size:18px;"><bean id="XXX" class="org.logicalcobwebs.proxool.ProxoolDataSource">
		<span style="color:#ff0000;"><!-- <property name="alias" value="XXX"></property> --></span>
		<property name="driver" value="oracle.jdbc.driver.OracleDriver"></property>
		<property name="driverUrl" value="jdbc:oracle:thin:@IP:1521:ORCL"></property>
		<property name="user" value="XXX"></property>
		<property name="password" value="XXX"></property>
		<!-- <property name="houseKeepingSleepTime" value="90000"></property> -->
		<property name="prototypeCount" value="5"></property>
		<property name="maximumConnectionCount" value="100"></property>
		<property name="minimumConnectionCount" value="10"></property>
		<property name="trace" value="true"></property>
		<property name="verbose" value="true"></property>
</bean></span>
引用的JAR:

<span style="white-space:pre">		</span><dependency>
			<groupId>proxool</groupId>
			<artifactId>proxool</artifactId>
			<version>0.9.1</version>
		</dependency>
		<dependency>
			<groupId>proxool</groupId>
			<artifactId>proxool-cglib</artifactId>
			<version>0.9.1</version>
		</dependency>


修改后运行没有问题,但有的项目模块存储需要创建多个数据源的情况,问题就此产生了......

配置两个数据源后,程序运行总是识别第一个加载的数据源,第二个无法加载成功(但不报错)

查了好多资料都没有这方面的详细说法,没办法只能看源代码了和运行日志

在才发现proxool识别不同的数据源是根据别名来区别的,由于人比较懒,就把别名省略了,哎、

[2014-12-04 10:29:59] - INFO: Shutting down 'null' pool immediately [Shutdown Hook]
[2014-12-04 10:29:59] - INFO: Stopping Prototyper thread
[2014-12-04 10:29:59] - INFO: Stopping HouseKeeper thread

<pre name="code" class="html"><strong>如果加上别名就变成这样了</strong>
[2014-12-04 10:29:59] - INFO: Shutting down '别名' pool immediately [Shutdown Hook]
[2014-12-04 10:29:59] - INFO: Stopping Prototyper thread
[2014-12-04 10:29:59] - INFO: Stopping HouseKeeper thread

 


经实践证明,在配置信息上加上别名就解决了多个数据源的问题


这个问题解决了,有发现了一个新的问题,在对系统进行压力测试时,多个线程同时操作数据库,过一段时间会出现如下问题

We are already in the process of making 11 connections and the number of simultaneous builds has been throttled to 10

可以说是线程太多造成的(连接数不能及时释放),但这不是根本原因,现在正在测试阶段,后续会更新......



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值