1

在 Quarkus 上,我们配置了一个默认数据源来连接到 as400:

quarkus.datasource.driver=com.ibm.as400.access.AS400JDBCDriver
quarkus.datasource.url=jdbc:as400://...
quarkus.datasource.username=xxx
quarkus.datasource.password=xxx
quarkus.datasource.metrics.enabled=true
quarkus.datasource.jdbc.enable-metrics=true
quarkus.datasource.jdbc.leak-detection-interval=10s
quarkus.datasource.jdbc.validation-query-sql=select 1 from sysibm.sysdummy1
quarkus.datasource.max-size=15
quarkus.datasource.min-size=2
quarkus.datasource.initial-size=5
quarkus.datasource.jdbc.pooling-enabled=true

司机是

<dependency>
  <groupId>net.sf.jt400</groupId>
  <artifactId>jt400</artifactId>
  <version>10.3</version>
</dependency>

它可以工作,但有时如果池中有可用的连接,连接也会被创建。当我们达到 15 个可用连接(池最大大小)时,我们收到错误,因为 agroal 无法获得连接:

Caused by: java.sql.SQLException: Sorry, acquisition timeout!
at io.agroal.pool.ConnectionPool.handlerFromSharedCache(ConnectionPool.java:244)
at io.agroal.pool.ConnectionPool.getConnection(ConnectionPool.java:173)
at io.agroal.pool.DataSource.getConnection(DataSource.java:66)
at org.jdbi.v3.core.Jdbi.open(Jdbi.java:301)
... 80 more

未检测到连接泄漏,连接存在且可用,其他数据源上没有出现问题,它们使用不同的驱动程序(mysql),我们检查了一切是否正确关闭

Windows 服务器上的 Jdk 11,quarkus 1.5.0.Final 和 1.4.2.Final

4

0 回答 0