这是完全错误的。你养着一条狗,自己在叫。不能使用静态
Connections
第一,第二,使用静态
Connection
违背了使用连接池的全部目的。应该是这样的:
public class DBUtil {
static DataSource ds;
static {
try {
Context context = new InitialContext();
ds = (DataSource)context.lookup("java:comp/env/rhwebDB");
} catch (NamingException e) {
System.out.println("DBUtil.NamingException" + e);
} catch (SQLException e) {
System.out.println("DBUtil.SQLException" + e);
}
}
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
}
并且,使用“试用资源”关闭所有内容:
public boolean someFunction( String myValue ){
boolean fRetVal = false;
String query = "select something from anytable";
try (Connection conn = DBUtil.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery( query )) {
if ( rs.next() )
fRetVal = true;
} catch( SQLException ex ) {
System.out.println(ex);
}
return fRetVal;
}
&OE公司
但请注意,您并不真正需要
DBUtil
一点都不难。您可以注入
DataSource
任何需要的地方,都可以通过注释来实现。