java - 基于 MVC 在 jsp/servlet 应用程序中设置连接池?

标签 java model-view-controller jakarta-ee connection-pooling java-7

我想在我的 Java Web 应用程序中使用 MySQL 和 JDBC 连接池,我在 Apache Tomcat 6.0 (6.0.35) - JNDI Datasource HOW-TO 找到了一个非常值得学习的资源。 , 但本示例使用 JSTL 代码来解释如何从池中检索连接。我想以类似的方式工作,但从头开始使用由 Bean、DAO、Servlet 和 JSP 组成的 MVC 架构。我从一个非常好的DAO tutorial那里得到了我想要的一切作者:BalusC,但我对教程的最后部分感到困惑,说 How about Connection Pooling? 。谁能详细说明一下这个连接池主题和 close() 方法吗?

编辑:
实际上我也应该早点添加这个东西:
由于我上面链接的教程出现在 JDK7 之前,现在它具有自动关闭 Connection 的 try-wth-resource 代码,那么我们如何维护连接池并在此处使用以下命令关闭池中的连接与教程中相同的 DAO 代码(或仅进行少量更改)

最佳答案

如果您的应用程序需要由多个用户使用,一个连接可以由连接池持有,因此其中一些用户将重用现有的连接 而不是建立新的连接,这会消耗时间。 关于close()方法:连接池保持 Activity 状态,如果每次访问后不关闭与它的连接,连接将堆积起来,如果数量增加,连接池就会堵塞并且不再接受其他连接!

public class MyDao {

    private InitialContext context;
    private DataSource datasource;

    public MyDao() {

        try {

            Class.forName("com.mysql.jdbc.Driver");
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "username", "password");
            context = new InitialContext();
            datasource = (DataSource) context.lookup("datasource name");
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }

    }
 public MyBean getMyBean() throws SQLException {
        Connection connection = null;
        PreparedStatement statement = null;
        ResultSet res = null;

        String sql = "some query";
        try {
            connection = datasource.getConnection();//pool connection
            statement = connection.prepareStatement(sql);
            res = statement.executeQuery();
            while (res.next()) {
               //return true

            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }

     finally {
            if (rs!= null) try { rs.close(); } catch (SQLException logOrIgnore) {}//result set if any
            if (stm!= null) try { stm.close(); } catch (SQLException logOrIgnore) {}//clase statement if any
            if (connection != null) try { connection.close(); } catch (SQLException logOrIgnore) {}//close connection
            }
            }


}//close MyDao

关于java - 基于 MVC 在 jsp/servlet 应用程序中设置连接池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10104749/

相关文章:

java - 在Java中加载Tensorflow模型

使用高斯算法的 2016 年 Java 复活节计算器

php - Yii2:如何将新变量从 View 发送到 Controller ?

java - 内存分析 : How to detect which application/package is consuming too much memory

java - System.getProperty 无法读取 jnlp - 自 java 7 以来的资源 - 这可能是因为未签名的 JNLP 文件

java ;在代码中访问注释

php - Codeigniter - 插入多个表

mysql - Phalcon 如何在查询管理器中执行 SELECT 而不使用 SUB QUERY 操作?

java - 更快地查看代码结果的方法

java - 从 Java Web 服务返回复杂类型