【问题标题】:javax.sql.DataSource connection pool Confusionjavax.sql.DataSource 连接池混乱
【发布时间】:2017-09-05 12:03:08
【问题描述】:

我想在我的 Java Web 应用程序中为 MySQL 数据库实现一个连接池。在网上查找时,我找到了一些指南,可以将基于 DriverManager 的连接更改为使用 DataSource 类型的连接。

据我从a tutorial I found from Oracle 得知,DataSource 自动从内置连接池中生成连接,尤其是本节。

变量 ds 表示一个 DataSource 对象,它产生与数据库 COFFEEBREAK 的池连接。您只需检索此 DataSource 对象一次,因为您可以根据需要使用它来生成尽可能多的池连接。对 ds 变量调用方法 getConnection 会自动生成一个池连接,因为 ds 变量表示的 DataSource 对象被配置为产生池连接。

但是,我发现有些地方说 DataSource 不利于连接池,而 ConnectionPoolDataSource 就是这样的类型。所以我对此有点困惑。

DataSource 做连接池吗?如果是这样,它会自动化吗?设置我的所有 servlet 并初始化以建立连接?是否有更直接的指南/资源可以从中了解这一点?

对于这一系列问题,我们深表歉意,我们将不胜感激任何帮助或指出正确的方向。

【问题讨论】:

  • 你完全错过了重点。前面几段讨论了使用 do 提供连接池的DataSource特定 实现。 Apache DBPC 就是这样一种。然后本教程继续表明使用这样的源在语法上与使用任何其他 DataSource. 相同
  • 您不应该直接使用javax.sql.ConnectionPoolDataSource 的实现,它旨在供连接池使用,它本身不(或不应该)提供连接池。

标签: java jdbc datasource


【解决方案1】:

DataSource 是一个接口,仅仅看它你无法知道它是否进行池化。在任何情况下,您始终可以使用自己的显式连接池(我偏爱 HikariCP),因此您无需猜测,您将确切地知道您正在使用您的池做什么。

【讨论】:

    猜你喜欢
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多