听说BoneCP这个连接池的性能比DBCP与C3P0的性能都要好,我就建了一个新工程测试了一下来连接MySQL。
说是快25倍,我有时间还是要测测。
1、问题
但发现在使用@Transactional时,MySQL驱动会出现以下错误
1
|
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed
|
2、解决
解决方法是在定义spring的配置时dataSource要嵌套一个LazyConnectionDataSourceProxy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<
context:annotation-config
/>
<
context:component-scan
base-package
=
"com.xxx.xxx.xxx"
/>
<
tx:annotation-driven
/>
<
bean
id
=
"transactionManager"
class
=
"org.springframework.jdbc.datasource.DataSourceTransactionManager"
>
<
property
name
=
"dataSource"
ref
=
"dataSource"
/>
</
bean
>
<
bean
id
=
"dataSource"
class
=
"org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy"
>
<
property
name
=
"targetDataSource"
>
<
bean
class
=
"com.jolbox.bonecp.BoneCPDataSource"
destroy-method
=
"close"
>
<
property
name
=
"driverClass"
value
=
"com.mysql.jdbc.Driver"
/>
<
property
name
=
"jdbcUrl"
value
=
"jdbc:mysql://127.0.0.1:3306/noah?useUnicode=true&characterEncoding=utf8"
/>
<
property
name
=
"username"
value
=
"noah"
/>
<
property
name
=
"password"
value
=
"noah"
/>
</
bean
>
</
property
>
</
bean
>
|
BoneCP官方的说法:http://jolbox.com/configuration-springlazy.html