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 连接池的主要内容,如果未能解决你的问题,请参考以下文章
JDBC连接池的testQuery/validationQuery设置
在 Tomcat 7 上设置 SQL Server JDBC 连接池和资源