DataSource和close方法

coooliang coooliang 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我想问的是conn的close方法 是否调用的是重写的colse()方法
老师这个close方法是把conn放回连接池 但不是调用close的方法
我感觉怪怪的
Servlet中使用数据源

Context context = new InitialContext();
DataSource ds = (DataSource) context.lookup("java:comp/env/jdbc/oracleds");
Connection conn = ds.getConnection();
conn.close();//是否调用的是重写的colse()方法



按照我最近看视频的内容 写了以下内容
来说明我认为的 colse()是调用重写后的close()方法

1.

//实现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);
}

2.

//在池中放五个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);
}


3.


//数据源对象中放了一个 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;

}


请问我的理解是否正确?!~
...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
coooliang
Java EE 67,535 成员 225,843 内容