集中在一个类中查找Tomcat 7 jndi中的资源

时间:2012-12-10 14:53:59

标签: java tomcat7 jndi connection-pooling

我正在使用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;
    }
}

1 个答案:

答案 0 :(得分:1)

您可以将JDBC连接池用作单独的bean,如此处所述in this article.