Java 将Tomcat7JDNI中资源的查找集中在一个类中
我正在使用NetBeans和Tomcat7创建一个web应用程序,我想创建我的第一个连接池。 我在这里遵循了tomcat文档中的所有步骤: 但在我的应用程序中,我将有许多DAO对象,每个对象都有许多不同的方法,因此我希望避免编写代码来查找数据源,并在访问DB的每个方法中获取连接,因此我创建了一个类来集中此操作,并返回到不同DAO对象的连接 你可以看到下面的代码,但正如我说的,这是我第一次使用这个,所以我不确定。。。这对你有意义吗?有没有更好的方法来做这样的事情?或者最好在每个方法中编写此代码 如果这是有意义的,我可以使用上下文甚至数据源作为静态属性来避免连续查找吗 非常感谢 我的连接池类:Java 将Tomcat7JDNI中资源的查找集中在一个类中,java,tomcat7,jndi,connection-pooling,Java,Tomcat7,Jndi,Connection Pooling,我正在使用NetBeans和Tomcat7创建一个web应用程序,我想创建我的第一个连接池。 我在这里遵循了tomcat文档中的所有步骤: 但在我的应用程序中,我将有许多DAO对象,每个对象都有许多不同的方法,因此我希望避免编写代码来查找数据源,并在访问DB的每个方法中获取连接,因此我创建了一个类来集中此操作,并返回到不同DAO对象的连接 你可以看到下面的代码,但正如我说的,这是我第一次使用这个,所以我不确定。。。这对你有意义吗?有没有更好的方法来做这样的事情?或者最好在每个方法中编写此代码
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您可以将JDBC连接池用作此处所述的单例bean谢谢@anubhava,但我现在感到困惑,因为事实上,我的第一种方法与您发布的链接类似,其他用户说我试图“重新发明轮子”。请看我在这里的第一篇帖子:并告诉我我的第一个方法是否正确。非常感谢@MikO:我同意使用通过JNDI定义的数据源更好,就像您在上面的代码中所做的那样。然而,我给出了这个链接,向您展示了如何使用ServletContextListener的连接池,以便您可以干净地初始化和销毁所有DB连接。好的,那么我上面的代码是正确的,有意义吗?使用JDNI并在类中集中查找?再次非常感谢。虽然我建议在ServletContextListener中使用它进行干净的初始化和销毁,但您的用例将其集中化是有意义的(我对您的问题投了赞成票)。非常感谢@anubhava!我将看一看ServeltContextListener类,因为我以前从未使用过它……谢谢@anubhava,但我现在感到困惑,因为事实上我的第一个方法类似于你发布的链接中的内容,其他用户说我试图“重新发明轮子”。请看我在这里的第一篇帖子:并告诉我我的第一个方法是否正确。非常感谢@MikO:我同意使用通过JNDI定义的数据源更好,就像您在上面的代码中所做的那样。然而,我给出了这个链接,向您展示了如何使用ServletContextListener的连接池,以便您可以干净地初始化和销毁所有DB连接。好的,那么我上面的代码是正确的,有意义吗?使用JDNI并在类中集中查找?再次非常感谢。虽然我建议在ServletContextListener中使用它进行干净的初始化和销毁,但您的用例将其集中化是有意义的(我对您的问题投了赞成票)。非常感谢@anubhava!我将看一看ServeltContextListener类,因为我以前从未使用过它。。。