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