各位大侠,在下遇到一个维护的系统。数据库连接是用的DATASCOURCE,下面的代码是得到数据库连接。我觉得获得连接的方法不能声明成static,我的问题如下:
1,每次得到的static得到的是不是同一个连接。(这个暂时不能确定)对DataScourse.getConnection取得连接的机制不了解。
public class DBManager {
static Logger logger = Logger.getLogger(DBManager.class.getName()); public static Connection getConnection() {
Connection conn = null;
try { DataSource ds = DataSourceLookup.getDataSourceLookup().getDataSource();// strDS
conn = ds.getConnection();
// strDS=null;
} catch (Exception e) { logger.error("DBManager.Connection()",e);
conn = null;
}
return conn;
} public static void closeConnection(Connection conn) {
try {
if (conn != null) {
conn.close();
conn = null;
}
} catch (Exception e) {
}
}
}

解决方案 »

  1.   

    兄弟啊,有个地方没有returnreturn conn;
      

  2.   

    我的问题是关于static connection的,其他的小的问题可以忽略!
      

  3.   

    有问题的,不能使用static,会产生连接未关闭的情况.
    使用者A
    开始获取连接. 
         使用者B,
          获取连接
           关闭连接关闭连接(此时conn是使用者B产生的那个连接)
      

  4.   

               这个用ThreadLocal<Connection> 就可以确定
      

  5.   

    我每次用Connection conn=DBManager.getConnection()得到连接,用完后调用DBManager.closeConnection(conn)进行关闭,应该不会出现你说的问题吧?
      

  6.   

    DataSource 没有用过如果 ds.getConnection(); 是一个新的连接的话使用你这个方法 不会有问题