Gloomy's Blog

Gloomy's Blog Website

0%

C3P0-0.9.5.2-自己来搞定配置xml

<Excerpt in index | 首页摘要>

c3p0自己搞定配置

<The rest of contents | 余下全文>

概述

帮朋友搞的那个项目,现在想接入数据库连接池,考虑了一下觉得c3p0不错。

然后配置。按照官方教程写了一个c3p0-config.xml

然后发现无论放在那里都不能正常配置。

无奈之下,决定自己搞一个配置文件自己读取算了

PS:

​ 搞完之后,发现被官方教程坑了。现在不是叫c3p0-config.xml了是叫做c3p0-service.xml

​ 不过我已经搞定了。就懒得再去重新搞了

具体实现

首先你需要如下的jar包

c3p0-0.9.5.2.jar //c3p0

mchange-commons-java-0.2.11.jar //c3p0

mysql-connector-java-5.1.7-bin.jar //mysql jdbc连接

dom4j-1.6.1.jar //xml解析库

我用的版本是这些,你可以根据自己的需求来下载相应的版本

首先,先看一下xml的配置:

1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?>
<sql-config>
<classmame>com.mysql.jdbc.Driver</classmame>
<url>jdbc:mysql:///woc</url>
<username>root</username>
<password>123456</password>
</sql-config>

我这里只设定了最基本的需求,如果需要高度定制根据自己需求走

xml我这里设定的是放在WEB-INF目录下

然后创建JDBCUtils.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public class JDBCUtils {
public static final ComboPooledDataSource dataSource;

static {
dataSource = new ComboPooledDataSource();
try {
//创建xml sax解析器
SAXReader reader = new SAXReader();

//找到xml所在的完整路径,
String path = Thread.currentThread().getContextClassLoader().getResource("").toString();
path = path.replace("file:", "");
path = path.replace("classes/", "");
path = path.substring(1);
path += "mysql-connection-pool-config.xml";

//将xml文件封装为document对象,然后开始解析xml
Document document = reader.read(new File("/" + path));
Element node = document.getRootElement();
Iterator<Element> iterator = node.elementIterator();
//根据对应的键值,设置相应的参数.我这里只实现了最基本的。具体看需求走。
while (iterator.hasNext()) {
Element e = iterator.next();
switch (e.getName()) {
case "classmame":
dataSource.setDriverClass(e.getText());
break;
case "url":
dataSource.setJdbcUrl(e.getText());
break;
case "username":
dataSource.setUser(e.getText());
break;
case "password":
dataSource.setPassword(e.getText());
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

就这样吧。蛋疼的c3p0.