C3P0Util.java
2.4 KB
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/**@author Sherlock_yb
* Created time:2014年9月19日
*/
package nlp.whu.utils.DB;
import java.io.File;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.log4j.Logger;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import nlp.whu.utils.Log4jUtil;
/**@description: 数据库连接工具
*/
public class C3P0Util {
public static final byte DATA_SOURCE_DOC = 0;
public static final byte DATA_SOURCE_APP = 1;
private static final Logger log = Log4jUtil.getInstance().getLogger(C3P0Util.class);
@SuppressWarnings("unused")
private static volatile ComboPooledDataSource cpds_doc;
private static volatile ComboPooledDataSource cpds_app;
static{
String curPath = (new File(".")).getAbsolutePath();
System.setProperty("com.mchange.v2.c3p0.cfg.xml",curPath.substring(0, curPath.length()-1) + "c3p0-config.xml");
}
public static Connection getConn(byte dataSource) throws SQLException{
Connection conn = null;
switch(dataSource){
case DATA_SOURCE_DOC:
// if(cpds_doc == null){
// synchronized(C3P0Util.class){
// if(cpds_doc == null){
// cpds_doc = new ComboPooledDataSource("doc_server");
// }
// }
// }
// conn = cpds_doc.getConnection();
break;
case DATA_SOURCE_APP:
if(cpds_app == null){
synchronized(C3P0Util.class){ //一个时间内只有一个线程得到执行
if(cpds_app == null){
cpds_app = new ComboPooledDataSource("app_server");
}
}
}
conn = cpds_app.getConnection();
break;
default: log.error("no such dataSouce!");
}
return conn;
}
public static void closeConn(Connection conn){
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
log.error("close conn failed", e);
}
}
}
public static void closeRs(ResultSet rs){
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
log.error("close rs failed", e);
}
}
}
public static void closeStmt(Statement stmt){
if(stmt != null){
try {
stmt.close();
} catch (SQLException e) {
log.error("close stmt failed", e);
}
}
}
public static void main(String[] args){
Connection conn = null;
try {
conn = getConn(DATA_SOURCE_DOC);
} catch (SQLException e) {
log.error("get conn failed", e);
}finally{
closeConn(conn);
}
}
}