将数据库连接池(如 Commons DBCP 或 c3p0)作为部署到 Glassfish 或 Websphere 等应用程序服务器的应用程序的一部分运行是否安全?对于独立应用程序是否有任何额外的步骤需要采取以确保安全或性能?
更新,澄清原因 - 我想到的用例可能需要由熟练的最终用户在运行时定义新的数据源 - 如果您愿意,更改数据源是应用程序功能的一部分。我认为我不能即时创建 abnd 使用容器管理的池?
将数据库连接池(如 Commons DBCP 或 c3p0)作为部署到 Glassfish 或 Websphere 等应用程序服务器的应用程序的一部分运行是否安全?对于独立应用程序是否有任何额外的步骤需要采取以确保安全或性能?
更新,澄清原因 - 我想到的用例可能需要由熟练的最终用户在运行时定义新的数据源 - 如果您愿意,更改数据源是应用程序功能的一部分。我认为我不能即时创建 abnd 使用容器管理的池?
AFAIK 它可以工作,但它当然会逃脱应用程序。服务器管理功能。
另外,我不完全确定取消部署或重新部署是如何发生的,以及连接是否正确处理。但这可以被认为是一个次要的安全细节:如果处理不当,我猜连接只会超时。我也不完全确定它是否适用于与分布式事务管理器集成的 XA 数据源。
也就是说,使用该应用程序。服务器池通常是在配置文件中配置 JNDI 名称。然后,您可以免费获得来自管理控制台的监控、配置、负载管理等。
事实上,您可以根据您使用的 AS 创建容器管理的数据源。
例如,Weblogic 有一个扩展的管理 API,例如,它们自己的 WLST (Weblogic Shell) 使用该 API 来通过脚本配置服务器。这当然是 Java API。它也有创建和配置数据源的方法。
另一条路线是基于 JMX 的配置。所有现代 AS 都将自己暴露为 JMX 容器。您也可以通过 JMX 创建数据源。
您只需要授予您的应用程序管理员权限(即提供用户名/密码)。
容器管理的 DS 的好处是可以集群。此外,它可以由人使用标准 AS UI 进行管理。
如果这对您不起作用,为什么,您可以随时以任意数量创建应用程序管理的 DS。请记住,它将绑定到特定的托管服务器(除非您对其定义实施手动集群)。
我不明白你为什么想要。为什么不使用应用服务器为您提供的连接池呢?
更新:我不相信不必反弹应用服务器就可以即时创建新池,但我可能是错的。如果这是正确的,我认为 Commons DBCP 或 C3P0 不会有帮助。