connection-pooling - Java:跨其他 J2SE 应用程序共享连接池...?

标签 connection-pooling java

所以我有一个 connection pool设置。这太棒了,因为我有一个真正需要它的应用程序。但是我想知道是否可以与其他 J2SE 应用程序共享此连接池?这是否值得,而不是根据每个应用程序的需要创建连接池?如果谨慎的话,我该如何做到这一点?

最佳答案

在单个 JVM 中使用连接池做多项事情并不难 - 这就是应用程序服务器每天都在做的事情(使用 JNDI 跨类加载器抛出对象)

有趣的是,当您将连接池与需要它的客户端代码放在单独的 JVM 中时,因为这不会立即允许简单地从池中请求和获取连接并在之后返回它。

基本上你有两个选择:

  1. 通过网络对所有 JDBC 命令进行远程请求。这很可能意味着数据将通过网络传输两次,从数据库到连接池,然后从连接池到您的应用程序。如果数据库连接是非常昂贵的对象,那么这可能是一个可行的解决方案。

  2. 使用RMI从连接池JVM中获取连接对象到你自己的机器上。这是一个非常昂贵的操作,但据我所知可以包括实际的驱动程序类,允许您的连接池提供与您的应用程序 JVM 不知道的数据库的连接。对我来说,只有在数据库连接昂贵得离谱或者需要在部署后支持额外的数据库而不改变原始部署的情况下,这才有意义。

请注意,使用连接池的主要原因是连接的创建、使用和丢弃的成本很高。一些数据库比其他数据库更多,例如MySQl 非常便宜(或者在我尝试时)非常便宜,所以它可能是最简单的方法。

所以。首先:及时衡量您的连接池为您购买了什么,然后考虑您是否值得花时间进一步集中它。

关于connection-pooling - Java:跨其他 J2SE 应用程序共享连接池...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2404107/

相关文章:

mysql - 关于如何使用 mysql 和数据库池设置 tomcat 的好教程是什么?

java - 将对象添加到列表时出现空指针异常

java - 在标准变量上使用常量是否使用更少的内存?

java - 字符串输入在 if-else 语句中不起作用

java - 如何从 servlet 发送参数

c# - 如何在使用连接池时强制 SqlConnection 物理关闭?

java - 不断收到 org.hibernate.exception.JDBCConnectionException : could not execute query

java - 通过并行查询并使用线程池来加速 mongo 查询?

java - String.replace() 奇怪的行为

java - Apache http 客户端 -> 本地地址绑定(bind) -> 一段时间后发生 BindException