从数据源里面拿出的Connection要不要关闭(Weblogic)

[code="java"]
InitialContext init = null;
Connection conection = null;
try{
request.setCharacterEncoding("utf-8");
String sql = "XXXXXX";
init = new InitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource) new InitialContext().lookup("DataSource");
conection = ds.getConnection();
conection.setAutoCommit(false);
PreparedStatement statement = conection.prepareStatement(sql);

statement.executeUpdate();
conection.commit();
}catch(Exception e){

conection.rollback();
e.printStackTrace();
}finally{
//是关闭init呢,还是关闭Connection呢,还是两个都关闭,为什么?
if(init!=null){
init.close();
}
}
[/code]
我说说我的想法,我认为Connection不应该关闭,应该关闭的是InitialContext 这个对象,大家是怎么看了

还有一个Weblogic的问题
我的Weblogic配置了数据源之后经常出现这样的问题,请问大家有没有谁知道的啊

[img]/upload/attachment/120758/397a3b33-cdd5-3381-9831-059827c2a9e3.jpg[/img]

大家帮一帮我谢谢了

从数据源里面拿出的Connection当然要关闭(Weblogic)
不然就造成连接资源没释放,用几下就没了数据库连接,系统就死在那了

你应该用一个数据库连接池组件来管理连接,而不要这样直接从DataSource 里取出,

我认为connection应该关闭,而InitialContext不应该在这个时候关闭;我虽然没怎么用过InitialContext,但是从已知的情况来看,像上下文这种重量级的配置不应该是在应用启动的时候初始化,应用关闭的时候关闭吗?如果单单为了得到一个connection就反复开关,太浪费效率了;connection要关闭则是毫无疑问的,因为用的是数据源,如果不关闭的话,这个connection对象就无法被重用; 关于第二个问题根据log来看应该是数据源没有多余的connection了;估计是你没有关闭connection引起的吧?要不就再检查下关于数据源的配置;

为了获得conn,反复查找jndi来获取datasource这本身就有问题。

[quote]像上下文这种重量级的配置不应该是在应用启动的时候初始化[/quote]