【问题标题】:Which is a better way to handle connection pooling?哪个是处理连接池的更好方法?
【发布时间】:2013-06-05 15:04:31
【问题描述】:

我正在尝试为 JSF 2.1 应用程序实现连接池,其中嵌入了 H2 数据库和 Jetty 9 Web 服务器。我有两个选项可以为 h2 数据库实现连接池。让 Jetty 为我实现连接池的选项,或者我定义一个创建连接池的应用程序范围的托管 bean。我想知道在处理连接池方面哪种方法更好?

使用应用程序范围的托管 bean 进行连接池:

JdbcConnectionPool cp = JdbcConnectionPool.create(
             "jdbc:h2:~/test", "sa", "sa");
         for (String sql : args) {
             Connection conn = cp.getConnection();
             conn.createStatement().execute(sql);
             conn.close();
         }
         cp.dispose();

【问题讨论】:

    标签: jsf-2 connection-pooling h2 managed-bean embedded-jetty


    【解决方案1】:

    任何一种连接池方法都可以。连接池的实现有很多(各有优缺点),随心所欲。

    如果您有要执行的语句列表,那么我不会为每个语句打开一个新连接。相反,使用相同的连接(和语句)执行所有语句:

    JdbcConnectionPool cp = JdbcConnectionPool.create(
        "jdbc:h2:~/test", "sa", "sa");
    ...
    Connection conn = cp.getConnection();
    Statement stat = conn.createStatement();
    for (String sql : args) {
        stat.execute(sql);
    }
    conn.close();
    ...
    cp.dispose();
    

    可以启动/停止连接池:

    • 在 Web 应用程序之外,作为资源(在我看来这有点复杂),例如文章 "Database Connection Pooling with Tomcat" 中所述。您会找到类似的 Jetty 文档。

    • 使用 ServletContextListener(也在 H2 文档中描述)。在我看来,这有点简单。缺点是连接池不能被多个web应用使用。

    【讨论】:

    • 我正在尝试使用 Jetty 端实现连接池,但我遇到了这个错误。13:51:19.689:WARN:oejx.XmlConfiguration:main: java:comp/env/jdbc/MyH2DS|???jdbc:h2:/data/testsa |?? java.lang.IllegalStateException: 没有合适的构造函数
    • 我正在尝试在 Web 应用程序启动时使用连接池打开数据库,并在 Web 应用程序停止时关闭它。我检查了 H2 文档和 Jetty,但找不到如何实现这个
    • 我添加了有关如何在 Web 应用程序中启动/停止连接池的信息。
    • 在我的例子中,我的 Web 应用程序充当使用此连接池的其他现有应用程序的库。到目前为止,我正在创建一个应用程序范围的 bean,它在应用程序启动时使用 JdbcConnectionPool.create() 创建连接池,但我一直在阅读一些关于连接池的文章,其中大多数更喜欢使用 JNDI 数据源。我想知道如果可以使用我现有的应用程序范围 bean 设计,还是更改设计以适应 JNDI DS 更好?
    • 如果您对多个 Web 应用程序使用相同的连接池,那么我可能会尝试使用 JNDI 数据源 servlet 容器 (Tomcat) 中包含的连接池机制。不是因为技术原因,而是因为这是这种情况下的“常见”方式。
    猜你喜欢
    • 2015-06-20
    • 2011-07-08
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 2011-06-11
    相关资源
    最近更新 更多