gpt4 book ai didi

java - 将 Tomcat 7 jndi 中资源的查找集中在单个类中

转载 作者:太空宇宙 更新时间:2023-11-04 07:54:40 24 4
gpt4 key购买 nike

我正在使用 NetBeans 和 Tomcat 7 创建一个 Web 应用程序,并且我想创建我的第一个连接池。我已按照此处的 tomcat 文档中的所有步骤进行操作: http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html

但是在我的应用程序中,我将拥有许多 DAO 对象,每个对象都有许多不同的方法,因此我希望避免编写用于查找数据源并在访问数据库的每个方法中获取连接的代码,因此我创建了一个类来集中此操作并返回到不同 DAO 对象的连接。

您可以看到下面的代码,但正如我所说,这是我第一次这样做,所以我不确定......这对您有意义吗?有更好的方法来做类似的事情吗?或者在每个方法中编写此代码更好?

如果这确实有意义,我可以使用 Context 甚至 DataSource 作为静态属性来避免连续查找吗?

非常感谢!

我的ConnectionPool类:

package dao.mysql;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.apache.tomcat.jdbc.pool.DataSource;


public class ConnectionPool {

public static Connection getConnection() {
Connection connection = null;
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)envCtx.lookup("jdbc/EmployeeDB");

connection = ds.getConnection();

} catch (SQLException ex) {
Logger.getLogger(ConnectionPool.class.getName()).log(Level.SEVERE, null, ex);
} catch (NamingException ex) {
Logger.getLogger(ConnectionPool.class.getName()).log(Level.SEVERE, null, ex);
}
return connection;
}
}

最佳答案

您可以使用 JDBC 连接池作为单例 bean,如此处所述 in this article.

关于java - 将 Tomcat 7 jndi 中资源的查找集中在单个类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13803352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com