67,513
社区成员
发帖
与我相关
我的任务
分享
Context context = new InitialContext();
DataSource ds = (DataSource) context.lookup("java:comp/env/jdbc/oracleds");
Connection conn = ds.getConnection();
conn.close();//是否调用的是重写的colse()方法
//实现Connection接口中所有的方法 其中close方法将连接放回Pool中
public class MyConnection implements Connection{
private ConncetionPool pool;
public MyConnection(ConncetionPool pool){
this.pool = pool;
}
public void close() throws SQLException {
pool.realse(this);
}
//在池中放五个MyConnction
public class ConncetionPool {
private MyConnection conn;
Vector<MyConnection> pool = new Vector<MyConnection>();
static
{
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public ConncetionPool(){
for(int i=0;i<5;i++){
conn = new MyConnection(this);
pool.add(conn);
}
}
public void realse(MyConnection myConnection){
pool.add(myConnection);
}
//数据源对象中放了一个 Pool
public class MyDataSource implements DataSource{
private ConncetionPool connectionPool = new ConncetionPool();
MyDataSource(){
}
public Connection getConnection() throws SQLException {
//我们得到的是Connection的实现类MyConnection
//所以 close方法调用的是MyConnection 重写后的close() 方法
MyConnection conn = connectionPool.getPool().get(0);
return conn;
}