【问题标题】:Java based Database Connection Pool library for multiple database users用于多个数据库用户的基于 Java 的数据库连接池库
【发布时间】:2012-12-18 18:29:25
【问题描述】:

我们的 Java 应用程序(在 Jetty 7.5.4 上运行的 Web 应用程序)使用底层数据库。有多个数据库用户,Java 部分需要使用这些数据库用户访问数据库。我想知道是否有一个数据库连接池库可以让我们使用多个数据库用户访问数据库。我知道有一堆 dbcp 库可以让我们与单个数据库用户一起使用,但我找不到任何支持多个数据库用户的库。

任何帮助表示赞赏, 谢谢, 婴儿车。

【问题讨论】:

  • 我相信任何数据库都能够支持多个用户,但容量不同。
  • Mawia,感谢您的回复。我试图找到一个支持多个数据库用户的数据库连接池库。我感觉您误解了我的问题,因为说“任何数据库都支持多个用户”。我说的对吗?
  • 您可以配置多个数据源,每个数据源都以不同的用户身份连接到数据库。
  • 我和@prams有同样的问题,了解多个数据源。但是,我有未定义的用户数量并且他们可能会增长,所以我希望连接池支持这一点,因为我无法为每个用户定义数据源......或者我可以吗?动态?
  • 我正在寻找完全相同的东西。我们有一个多租户 Web 应用程序,每个用户都使用自己的 creditendials 连接到数据库,以实施基于数据库级别角色的安全性。在我们的用例中没有其他方法。我们发现能够对这些用户使用连接池有助于提高性能,但目前还没有找到解决方案。

标签: java database connection pool


【解决方案1】:

Tomcat DBCP 绝对支持多用户 (source code)。我不确定如何配置它,但它实现了DataSource.getConnection(username, password),这是所需的关键功能。

【讨论】:

    【解决方案2】:

    除了上面 ngreen 的评论,您还需要在数据源属性中将 AlternateUsernameAllowed 设置为 true,但是您仍然需要在属性上设置用户名/密码,因为这是在创建池时使用的。

    /**
     * Returns true if the call {@link DataSource#getConnection(String, String) getConnection(username,password)} is
     * allowed. This is used for when the pool is used by an application accessing multiple schemas.
     * There is a performance impact turning this option on.
     * @return true if {@link DataSource#getConnection(String, String) getConnection(username,password)} is honored, false if it is ignored.
     */
    public boolean isAlternateUsernameAllowed();
    

    【讨论】:

      猜你喜欢
      • 2020-01-23
      • 1970-01-01
      • 2011-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 2015-01-12
      相关资源
      最近更新 更多