java在Tomcat中调用JNDI数据源的正确方法
我正在Tomcat服务器上使用Java web应用程序,想知道从Tomcat的JNDI中访问数据库连接的“最佳实践”是什么
目前,每当我需要访问数据库时,基本上就是这样做的:
Context envContext = null;
DataSource dataSource = null;
try {
envContext = (Context)ctx.lookup("java:/comp/env");
dataSource = (DataSource)envContext.lookup("jdbc/datasource");
return dataSource.getConnection();
} catch (Exception e){
e.printStackTrace();
return null;
}finally {
if(envContext != null){
try{
envContext.close();
} catch (NamingException e){
e.printStackTrace();
}
}
}
然而,每次我想访问数据库时,这是从JNDI查找连接的正确方法吗?我应该保留对上下文或数据源的引用吗
# 1 楼答案
new InitialContext()
在每个应用程序容器中都很昂贵,它应该是一个static final
并在static {}
块中创建,实际上使其成为一个Singleton
。您只需创建一次此引用,并在任何需要的地方重复使用它DataSource
也应该是static
。您应该有一个public static Connection getConnection();
方法来检索Connection
对象,代码不应该直接处理DataSource
。这在PooledDataSource
实现中尤其有效