Tomcat/数据库设置 - JDBC 连接池

Posted

技术标签:

【中文标题】Tomcat/数据库设置 - JDBC 连接池【英文标题】:Tomcat/Database Setup - JDBC Connection Pooling 【发布时间】:2017-02-24 00:04:20 【问题描述】:

我正在研究如何设置 Java EE 数据库(例如 Tomcat)与数据库(比如说 Oracle)的连接。

根据我正在阅读的内容,为每个用户建立专用连接不如使用“连接池”有效,因此这通常是首选设置。

这会导致以下问题:

问题 1) 如何最好地区分用户以确保他们不会以不正确的访问权限进行连接。例如,数据使用者不会以与管理员相同的权限连接。

根据我的表面理解,可能会为不同类别的用户设置不同类型的连接池,但显然 admin 会小得多,或者可能使用过滤器。

问题 2) 如何使用连接池跟踪特定人员所做的更改。似乎每个人都有相同的登录名?如果是这样,我猜登录身份验证是由 Web 服务器本身完成的,然后才能连接到数据库本身。

【问题讨论】:

您似乎相信/希望应用程序用户和数据库用户是同一件事。对于 Web 应用程序,情况并非如此。 Web 应用程序使用单个数据库用户连接到数据库,授予对数据库中数据的完全访问权限。由应用程序自己进行最终用户身份验证和授权检查,以确定最终用户可以访问应用程序的哪个部分。 顺便说一句,尽量不要有“动态”连接池。 【参考方案1】:

在任何情况下都不应为用户提供与您的数据库的连接。如果您将数据库访问权限授予远程用户,他们就可以对您的数据库做任何他们想做的事情。例如,删除它。你不想要这个。您的网络服务器应该是唯一连接到数据库的东西。

您的 Web 服务器应该具有访问数据库的方法,以执行您明确允许具有给定权限的用户执行的操作。例如,管理员用户可能有权访问banUser() 方法,该方法为users 表中的记录设置banned 标志。但是您不希望普通用户可以访问该功能。也许普通用户和管理员用户可以访问editBio() 方法。这种歧视是由您的身份验证和授权机制处理的,听起来您需要仔细阅读。

【讨论】:

以上是关于Tomcat/数据库设置 - JDBC 连接池的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat 和 JDBC 连接池

JDBC连接池的testQuery/validationQuery设置

在 Tomcat 7 上设置 SQL Server JDBC 连接池和资源

如何记录 Tomcat 7 JDBC 连接池、连接创建

DBCP,C3P0与Tomcat jdbc pool 连接池的比较

如何调试/记录 Tomcat JDBC 连接池的连接?