浏览 194 次
|
该帖已经被评为新手帖
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-07-23
情况是这样的:
应用服务器要连接20个数据库,只有1个Postgres数据库是可写的,其余19个Mysql都是只读的。 原来的方案是用XAPool,和Global transaction Manager,管理所有的data source,但连接Postgres数据库时经常扔出链接错误的Exception。 考虑到只有一个数据库可写,于是改用DBCP做data source,配置了一个JDBC transaction manager,管理指向Postgres的data source,其余data source没有配Transaction Manager。发现这样配服务器速度快了很多。 问题出在服务器跑一段时间后,就会发生连接不上Mysql数据库。推测是因为连接池耗尽引起的。查了一下Spring的资料,发现JDBCTemplate在没有transaction manager的情况下应该自己会管理connection。只能推测因为有一个Transaction Manager(针对Postgres的,注入到Manager层,所有的DAO都受其管理),所以jdbctemplate放弃了对connection的管理,而那个Transaction manager 只能管Postgres的连接,导致Mysql的连接没人管。 由于对Spring的机理不熟,以上纯属猜测。有谁能解惑一下?或给个方案? 多谢多谢 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-07-24
DBCP中的data source默认的最大连接数是8,把maxActive设置为-1或者一个更大的数,应该就可以了
|
|
| 返回顶楼 | |


