常用的数据源连接池
1.DBCP
- 需要的依赖包
<dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency>
- 数据源实现类在spring中的配置
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> <property name="initialSize" value="5" /> <property name="maxActive" value="10" /> </bean>
2.C3P0
- 需要的依赖包
<dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency>
- 数据源实现类在spring中的配置
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${driver}" /> <property name="url" value="${url}" /> <property name="user" value="${username}" /> <property name="password" value="${password}" /> <property name="initialPoolSize" value="5" /> </bean>
3.Proxool(据说比DBCP和C3P0的性能都要好)
Proxool与其他的数据源连接池有点不一样,它不但会创建一个甚至多个连接池,而且还为每个连接池定义了资源定位(url),使用Proxool提供的连接驱动来实现与连接池的连接。因此,在配置Proxool连接池时,需要两步:1.创建连接池;2.使用一般的jdbc获取连接。
3.1 Proxool的xml配置文件
在创建连接池前,都需要对Proxool进行一些配置,下面是配置样例:
<?xml version="1.0" encoding="UTF-8"?> <something-else-entirely> <proxool> <alias>DBPool</alias><!--该连接池的别名,那么该连接池的资源定位(URL)就是proxool.DBPool--> <driver-url>jdbc:mysql://192.168.2.108:3306/lucky_wheel_test</driver-url><!-- 设定连接数据库的url --> <driver-class>com.mysql.jdbc.Driver</driver-class><!-- 设定所连接数据库使用的驱动 --> <driver-properties><!-- 设定连接数据库的参数 --> <property name="user" value="test" /><!-- 设定登陆用户 --> <property name="password" value="test" /><!-- 设定登陆密码 --> </driver-properties> <house-keeping-sleep-time>60000</house-keeping-sleep-time><!-- 设定sleep time --> <minimum-connection-count>1</minimum-connection-count><!-- 设定最少的连接数 --> <maximum-connection-count>15</maximum-connection-count><!-- 设定最大的连接数 --> <maximum-connection-lifetime>18000000</maximum-connection-lifetime><!-- 设定连接的最长存活时间 --> <maximum-active-time>60000</maximum-active-time><!-- 设定从连接池拿出后最大的使用时间 --> <house-keeping-test-sql>select 1</house-keeping-test-sql><!-- 设定测试连接是否alive的命令 --> <verbose>true</verbose> <trace>false</trace> </proxool> <!--可配置多个连接池--> <proxool> ... </proxool> </something-else-entirely>
3.2 加载Proxool配置文件创建连接池
3.2.1 硬代码方式加载Proxool配置文件
static{ InputStream is = ProxoolTestCase.class.getResourceAsStream("/test/proxool.xml"); Reader reader = new InputStreamReader(is); try { JAXPConfigurator.configure(reader, false); } catch (ProxoolException ex) { logger.debug("", ex); } }
3.2.2 servlet中加载Proxool配置文件
<!--加载proxool配置文件创建proxool连接池--> <servlet> <servlet-name>ServletConfigurator</servlet-name> <servlet-class> org.logicalcobwebs.proxool.configuration.ServletConfigurator </servlet-class> <init-param> <param-name>xmlFile</param-name> <param-value>WEB-INF/proxool.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!--Admin servlet用于监测proxool连接池信息--> <servlet> <servlet-name>Admin</servlet-name> <servlet-class> org.logicalcobwebs.proxool.admin.servlet.AdminServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>Admin</servlet-name> <url-pattern>/admin</url-pattern> </servlet-mapping>
3.3 普通的Jdbc方式获取连接
3.3.1 硬代码方式获取连接
Connection connection = null; try { Class.forName("org.logicalcobwebs.proxool.ProxoolDriver"); connection = DriverManager.getConnection("proxool.DBPool"); } catch (Exception ex) { }
3.3.2 spring方式配置数据源
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="org.logicalcobwebs.proxool.ProxoolDriver"/> <property name="url" value="proxool.DBPool"/> </bean>