在 Java EE 应用程序服务器中使用应用程序管理的连接池

发布于 2024-09-06 20:41:04 字数 220 浏览 5 评论 0原文

作为部署到 Glassfish 或 Websphere 等应用程序服务器的应用程序的一部分来运行数据库连接池(如 Commons DBCP 或 c3p0)是否安全?与独立应用程序相比,是否需要采取任何其他步骤来确保安全或性能?


更新,澄清原因 - 我想到的用例可能需要由熟练的最终用户在运行时定义新的数据源 - 如果您愿意,更改数据源是应用程序功能的一部分。我不认为我可以动态创建和使用容器管理池?

Is it safe to run a database connection pool (like Commons DBCP or c3p0) as part of an application deployed to an application server like Glassfish or Websphere? Are there any additional steps over a standalone application that should be taken to ensure safety or performance?


Update, clarification of reason - the use case I have in mind could need new data sources to be defined at runtime by skilled end users - changing the data sources is part of the application's functionality, if you like. I don't think I can create abnd use container-managed pools on the fly?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

西瓜 2024-09-13 20:41:04

AFAIK 它可以工作,但它当然会逃脱应用程序。服务器管理功能。

另外,我不完全确定取消部署或重新部署是如何发生的以及连接是否正确处理。但这可以被认为是一个次要的安全细节:如果处理不当,我猜连接就会超时。我也不完全确定它是否适用于与分布式事务管理器集成的 XA 数据源。

也就是说,使用该应用程序。服务器池通常是在配置文件中配置 JNDI 名称的问题。然后您可以免费获得监控、管理控制台配置、负载管理等。

AFAIK it works, but it will of course escape the app. server management features.

Also, I'm not entirely sure how undeployment or redeployment happens and whether the connections are correctly disposed. But that can be considered as a minor safety detail: if disposed improperly, connections will simply time out I guess. I'm also not entirely sure whether it works for XA data source which integrates with the distributed transaction manager.

That said, using the app. server pool is usually a matter of configuring the JNDI name in a configuration file. Then you get monitoring, configuration from the admin console, load management, etc. for free.

筑梦 2024-09-13 20:41:04

事实上,您可以根据您使用的 AS 创建容器管理的数据源。

例如,Weblogic有一个广泛的管理API,例如,他们自己的WLST(Weblogic Shell)使用它来通过脚本配置服务器。这当然是Java API。它也有创建和配置数据源的方法。

另一种途径是基于 JMX 的配置。所有现代 AS 将自己暴露为 JMX 容器。您也可以通过 JMX 创建数据源。

您所需要的只是授予您的应用程序管理员权限(即提供用户名/密码)。

容器管理的DS的好处是它可以集群。此外,它可以由人使用标准 AS UI 进行管理。

如果这对您不起作用,为什么,当然您可以随时创建任意数量的应用程序管理的 DS。请记住,它将绑定到特定的托管服务器(除非您对其定义实施手动集群)。

In fact, you can create container-managed datasources depending on AS you use.

For example, Weblogic has an extensive management API that is used, for example, by their own WLST (Weblogic Shell) to configure servers by scripts. This is, of course, Java API. It has methods to create and configure datasources too.

Another route is JMX-based configuration. All modern AS expose themselves as JMX containers. You can create datasources via JMX too.

All you need is to grant your application admin privileges (i.e. provide with username/password).

The benefit of container-managed DS is it can be clustered. Also, it can be managed by human being using standard AS UI.

If that doesn't work for you, why, sure you can create application-managed DS any time and in any numbers. Just keep in mind that it will be bound to a specific managed server (unless you implement a manual clustering of it's definition).

伴我心暖 2024-09-13 20:41:04

我不明白你为什么想要这么做。为什么不使用应用服务器为您提供的连接池呢?

更新:我不相信可以在不反弹应用程序服务器的情况下动态创建新池,但我可能是错的。如果这是正确的,我不相信 Commons DBCP 或 C3P0 会有帮助。

I don't see why you'd want to. Why not use the connection pool that the app server provides for you?

Update: I don't believe it's possible to create new pools on the fly without having to bounce the app server, but I could be wrong. If that's correct, I don't believe that Commons DBCP or C3P0 will help.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文