问题标签 [connection-pool]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
530 浏览

java - 在带有 H2 嵌入式数据库的 Android 设备上使用 JDBC 连接池

我正在开发一个由 Android 应用程序使用的嵌入式 Java 应用程序 (jar)。(Android 设备(API19)只是视图,我将带有 Gradle 的 JAR 导入到我的 Android Studio 项目中)。

我正在使用H2数据库(在 Android 上测试),我正在尝试将它与连接池一起使用(尝试C3P0HakiriCP)。

这是 jar pom 文件内容(使用 HakiriCP):

为了构建 jar,我使用了 maven 插件(程序集、one-jar...)来确保所有依赖项都在类路径中。

当我运行 JAR 时,一切都运行良好,但是当我尝试运行 Android 应用程序(使用该 jar)时,我遇到了一些错误。这是我的Android项目gradle文件内容:

我得到的错误主要是Class-not-found ExceptionCaused by: java.lang.ClassNotFoundException: Class io.prometheus.client.Collector not found

在范围内HakiriCP有一些依赖项,provided所以我尝试在我的 Android gradle 文件中导入这些依赖项,但我仍然遇到错误,例如:

有什么我想念的吗?

是否可以在 android 上使用 JDBC 连接池?(根据在 android 中建立与 MySQL 的池连接是可能的,但我仍然无法让它工作)。

也许有人可以推荐另一个在android上测试的连接池?

谢谢

更新

根据 H2 文档:

目前只支持JDBC API(计划在以后的版本中支持Android数据库API)......

限制:目前不支持使用连接池,因为需要 javax.sql。类在 Android 上不可用。

0 投票
2 回答
6813 浏览

tomcat - Tomcat 忽略 removeAbandonedTimeout 并关闭池中的连接

我正在使用 commons dbcp 在 as400 上使用 JDBC 连接到 DB2 的 tomcat 7.0 上工作。一旦我在服务器上加载负载,它就会立即打开和关闭与数据库的连接,而忽略我设置的 30 分钟 removeAbandonedTimeout 设置。我尝试了几种设置都无济于事。例如,在 15 秒的时间间隔内,它将无缘无故地打开 150 个连接并关闭 140 个连接。我们让这个应用程序在旧的 WebSphere 服务器上运行,它不会关闭连接,除非它们真的空闲。

这是我的配置:

当系统空闲或只有几个测试帐户时,它会按预期运行,但是一旦我在服务器上加载,大量打开和关闭立即开始。例如,它将在相同的 15 秒间隔内打开 150 个连接并关闭 90 个连接。我正在从我的监控软件读取与 as400 上 QZ 作业的开始和结束相关的套接字打开和关闭。在使用连接时,它将不断执行此操作。

这违背了连接池的目的。任何想法或想法表示赞赏。

也令人困惑,因为不清楚我应该从哪些参数开始。不接受与Tomcat JDBC 连接池参数不同的commons dbcp 参数,即removeAbandonedOnMaintenance。但是 minEvictableIdleTimeMillis 的默认值 1800000 是从 Tomcat jdbc 池参数中获取的,而不是 60000。

https://commons.apache.org/proper/commons-dbcp/api-1.2.2/index.html

https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html

当我没有明确设置参数时,这就是我得到的默认值。它似乎列出了所有 tomcat jdbc 池参数,而不是 commons DBCP 参数。但是,它从 commons DBCP 中选择 minEvictableIdleTimeout 的默认值,而不是从 Tomcat JDBC 连接池参数中选择 60 秒。奇怪的部分是removeAbandoned 参数没有为commons dbcp 列出,它是removeAbandonedOnMaintenance 和removeAbandonedOnBorrow。一个星期以来,我一直试图把这种果冻钉在墙上。

我使用 jmxproxy 来获取实时统计信息和设置。

http://myserver:8080/manager/jmxproxy/?qry=Catalina%3Atype%3DDataSource%2C *

0 投票
0 回答
60 浏览

oracle - 数据库备份后未建立连接

在 weblogic 12c 服务器中部署了 web 应用程序,它具有数据源配置以利用连接池。数据库是 Oracle 12,用例:当应用程序处于活动状态并运行时,已经运行了一个 min 数据库备份脚本(停止 db,备份,启动 db),之后尝试访问应用程序(会话建立)然后得到 SQL 错误(连接已经关闭)。可能是什么问题?

临时解决方案:重新启动应用程序后,它工作正常,没有任何问题。仍然想知道它是如何工作的?

数据源配置:

0 投票
0 回答
102 浏览

android - 改造 2 无法得到响应

我有一个 android 应用程序,主屏幕向服务器发出很少的请求(enqueue() 的 5-10 个请求取决于应用程序逻辑)但是当我再添加一个请求时,我无法从日志中获得响应。我配置改造以下代码:

我通过以下方式致电请求:

但是 HttpLoggingInterceptor 不会将此请求的响应记录为 <-- logging.... 它并非在所有请求中都发生,有时可以,所以我认为原因是连接池,但我通过添加以下行来尝试代码:

但它没有影响。请帮我找出解决这个问题的方法。非常感谢!

0 投票
1 回答
694 浏览

mysql - 设置连接池。重新连接到数据库

中的连接池有问题tomee 8。大约工作 8 小时后,与数据库的连接断开。如何配置重新连接到数据库。

我想了想validationQuery testOnBorrow。也有一些选择removeAbandoned removeAbandonedTimeout,但他们写道这是不可取的。defaultAutoCommit不太明白为什么,但据我所知,文档是关于重新连接的。

这是server.xml

它是日志:

0 投票
1 回答
8987 浏览

java - org.apache.tomcat.jdbc.pool.ConnectionPool - 无法创建池的初始连接

我正在开发一个基于 Spring Boot 的项目,该项目包含一个 Tomcat 连接池(而不是默认的 Hikari)。我已经按照这篇文章做了所有的事情,它按预期工作,虽然当我从 MySQL 更改为 PostgreSQL 时,它就不起作用了;这是堆栈跟踪:

pom.xml中的相关依赖项:

application.properties中的相关配置:

该项目托管在Heroku上,因此我们需要.env文件在开发过程中提供环境变量:

我尝试了许多不同的方法,但没有运气,请帮忙。

0 投票
1 回答
2380 浏览

java - 与 JDBC 一起使用时,Java Executor 服务未关闭线程

我使用 ExecutorService 和 FixedThreadPool 通过 JDBC 执行一些 SQL。但是,当我分析我的应用程序时,似乎线程数正在增加,当然内存也在增加。问题是这在某种程度上与 JDBC 有关,因为当我在线程池的任务中删除创建语句和连接时,线程数根本没有增加。

以下是我将任务汇总到我的线程池中的方式:

这是我在任务中所做的:

这是上面提到的代码中使用的 ConnectionPool (pool.getConnection(),我使用 apache DBCP2:

这是分析器(imgur)的一个示例

似乎线程没有正确结束,这很奇怪,因为如果 ExecutorService 是 5 个连接的固定池,它们应该用完吗?所以我不知道线程是如何仍然存在的,它们导致了相当大的内存泄漏。

问题在于创建 Connection 和 PreparedStatement 对象,因为当我将其注释掉时,线程数保持在固定值。

0 投票
2 回答
670 浏览

typo3 - TYPO3 ConnectionPool 找到文件引用的uid后的文件并更新数据

这个概念是,在成功保存我的对象后,它应该更新数据库中的文本(使用 Hook)。让我们称该字段为“ succText ”。我想访问的表是 sys_file 但我只在保存对象时获得 sys_file_reference id。所以我想我可以使用 ConnectionPool 来选择这个文件引用的 sys_file,然后在字段“ succText ”上插入数据。

我试过这个:

但这给了我 sys_file_reference id,而不是 sys_file 表的 id 和字段值。

至于更新,我还没有尝试过,因为我还没有弄清楚如何获取需要更新的行。我猜想在找到行后使用子查询,我真的不知道。

processDatamap_preProcessFieldArray将被重命名为 post。我只有这种方式才能在后端获得结果。

提前致谢,

0 投票
1 回答
63 浏览

postgresql - Postgres 在通过 JBOSS 运行我的应用程序时出现致命错误

我正在通过JBoss使用 postgresql 数据库运行我的应用程序,但给了我最大连接错误,但通过PGAdmin我能够连接数据库

17:14:44,917 错误 [STDERR] [警告] com.mchange.v2.resourcepool.BasicResourceP ool$AcquireTask@52900718 -- 采集尝试失败!!!清除待处理的获取资源。在尝试获取所需的新资源时,我们未能成功超过允许的最大获取尝试次数 (2)。上次获取尝试 mpt 异常:org.postgresql.util.PSQLException:致命:剩余连接槽保留用于 org.postgresql.core.v3.ConnectionFactoryImpl.readStartupMessages(Conn) 的非复制超级用户连接

0 投票
2 回答
631 浏览

mysql - Cordapp-未找到 MySql ConnectionPoolDataSource 的 Hikari 连接池类

我正在为 Corda 构建一个工作流程。我想使用 Hikari 连接池库来连接 MySql 数据库。我不是要替换分类帐 H2 数据库。该数据库用于存储/检索一些分类帐中不需要的信息。我可以在没有 Hikari 的情况下连接到 MySql。但是,当我使用 Hikari 时,出现错误。java.lang.ClassNotFoundException: com.mysql.cj.jdbc.MysqlConnectionPoolDataSource

我已经将 Hikari 代码作为独立的 jar 文件进行了测试。它工作正常。这是导致问题的corda加载和运行jar文件的方式的组合,在cordapps目录中。因为类是 jar 的一部分。这个好像有点不对

我已经添加了 MySql 依赖项,与https://docs.corda.net/cordapp-build-systems.html#setting-your-dependencies中提到的内容一致 我也可以连接到 MySql DB,如果我是不使用光。

我探索了 cordapp jar 。我可以看到必要的 jar 存在于 cordapp jar 中。

cordapp 的 Gradle 依赖项

示例代码

例外:

如果我从 jar 中的主类运行代码,它就可以工作。但它在cordapp内部不起作用