有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    new InitialContext()在每个应用程序容器中都很昂贵,它应该是一个static final并在static {}块中创建,实际上使其成为一个Singleton。您只需创建一次此引用,并在任何需要的地方重复使用它

    DataSource也应该是static。您应该有一个public static Connection getConnection();方法来检索Connection对象,代码不应该直接处理DataSource。这在PooledDataSource实现中尤其有效