当前位置: 首页 > 知识库问答 >
问题:

在Spring启动中尝试获取Hikari池活动连接时的InstanceNotFoundExc的异常

耿学义
2023-03-14

我正在尝试获取Spring BootHikari池中的活动连接数。在我的日志中,它打印了两个池,命名为HikariPool-1HikariPool-2

@Slf4j
@RequiredArgsConstructor
public class HikariJmxElf {
    private final ObjectName poolAccessor;
    private final MBeanServer mBeanServer;

    public HikariJmxElf(final String poolName) {
        try {
            mBeanServer = java.lang.management.ManagementFactory.getPlatformMBeanServer();
            poolAccessor = new ObjectName("com.zaxxer.hikari:type=Pool (" + poolName + ")");
        } catch (MalformedObjectNameException e) {
            throw new RuntimeException("Pool " + poolName + " could not be found", e);
        }
    }

    public int getIdleConnections() {
        try {
            return (Integer) mBeanServer.getAttribute(poolAccessor, "IdleConnections");
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public int getActiveConnections() {
        try {
            return (Integer) mBeanServer.getAttribute(poolAccessor, "ActiveConnections");
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public int getTotalConnections() {
        try {
            return (Integer) mBeanServer.getAttribute(poolAccessor, "TotalConnections");
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

}

我正在尝试使用执行器信息endpoint获取该数据。

@Slf4j
@Component
@RequiredArgsConstructor
public class HikariPoolInfoContributor implements InfoContributor {
    @Override
    public void contribute(Info.Builder builder) {
        builder
            .withDetail("connectionDetails", new HikariJmxElf("HikariPool-1").getActiveConnections())
            .build();
    }
}

我得到的全部错误是

java.lang.RuntimeException:javax.management。InstanceNotFoundException:com.zaxxer。hikari:type=池(HikariPool-1)

我有这些问题。

  1. mBeanServer服务器需要一个带有池名称的对象名称。HikariPool-1不是if的实际名称吗?
  2. 有没有办法不用名字就能得到所有Hikari泳池?

共有1个答案

陆斌
2023-03-14

访问令牌过期后,我们可以通过向与上述相同的 URL 发送 POST 请求来刷新它,但包含刷新令牌而不是用户名和密码:

请查看下面的链接。

https://www.baeldung.com/spring-boot-keycloak

 类似资料:
  • 我使用具有以下设置的Hikary连接池: 在getConnection()之后,hikari尝试获取到实例的2个连接,但只将一个连接放在连接池中。我怎样才能修好它?hikari版本是

  • 我正在试图弄清楚目前有多少连接被打开,但我似乎找不到一个明显的方法来使用Hikari实现这一点。 公开了这些信息(),但我没有看到从访问这些信息的简单方法。

  • 我使用Hikari连接池管理器来查询AS400机器中的一些表。 我设置了至少1个连接池连接,最多10个。我同时查询5个表。 问题是,尽管在查询之前使用HikariDataSource getConnection()方法,并且在每次查询之后使用Connection关闭()方法,但当我转到WRKACTJOB时,我看到10个活动作业,大概是每个连接一个,直到达到最大连接池连接。 如何清除未使用的连接\作

  • 我正在使用配置了多个数据源的Spring Boot 1.5.17。我的一个数据源配置如下。 现在,如何获取或记录此数据源的连接池中的活动连接数?

  • 我们有一个spring-boot应用程序,它使用嵌入式tomcat进行部署,并使用MySQL后端的默认tomcat-jdbc连接池,而没有为MySQL或tomcat端定制。 该应用程序有一些调度程序,它们主要在一天中的特定时间运行,即在昨天的最后一次cron运行和今天的第一次cron运行之间,有超过9个小时的间隙。然而,无论何时cron在早期运行,它都从未遇到过空闲连接问题。 现在我们看到一条错误

  • 我希望在我的Spring 4应用程序中使用Hikari连接池。数据库是Google CloudSQLPostgres数据库。 我在pom中有以下依赖项。xml: 在我的申请Context.xml,我有: 但是我得到了以下例外: 出了什么问题?