HikariCP 1.4.0 MBean InstanceNotFoundException

ste*_*cpt 3 java oracle hikaricp

我正在为我的数据库连接池使用以下配置.使用在Windows 7上运行的HikariCP 1.4.0,jdk1.6.0_45和Oracle Express 11g.

HikariConfig config = new HikariConfig();
config.setDataSourceClassName("oracle.jdbc.pool.OracleDataSource");
config.addDataSourceProperty("serverName", "localhost");
config.addDataSourceProperty("url", "jdbc:oracle:thin:@localhost:1521:XE");
config.addDataSourceProperty("user", "bob");
config.addDataSourceProperty("password", "bob1");
config.setPoolName("steve");

HikariDataSource ds = new HikariDataSource(config);

// do some inserts and reads here ... works great

MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
ObjectName poolName = new ObjectName("com.zaxxer.hikari:type=Pool (steve)");

Integer idleConnections = (Integer) mBeanServer.getAttribute(poolName, "IdleConnections");

System.out.println("Number of Idle Connections : " + idleConnections);          
Run Code Online (Sandbox Code Playgroud)

我得到这个堆栈跟踪:

javax.management.InstanceNotFoundException: com.zaxxer.hikari:type=Pool (steve)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1094)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:662)
at com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:639)
Run Code Online (Sandbox Code Playgroud)

使用JConsole并附加到正在运行的进程.我看到以下MBean:JMImplemtation,com.oracle.jdbc,com.sun.management,java.lang,java.nio,java.util.logging.

我没有看到任何与Hikari连接池相关的内容.

有什么建议我接下来可以尝试吗?

bre*_*ttw 7

两件事情.两天前针对HikariCP 1.4.0 报告了一个错误,其中忽略了用户定义的池名称(并替换为自动生成的名称).此错误已修复,但您需要克隆存储库并自行构建,因为它将在下一个版本发布之前出现.

第二件事是,你需要设置registerMbeanstrue.以编程方式,这将是setRegisterMbeans(true).如果运行现有1.4.0,则将忽略您的用户定义名称,但该池确实将注册为MBean.

  • 对某些人来说可能很明显的东西,```setRegisterMBeans(true)```应该调用```````而不是HikariDataSource```````(因为它没有效果) . (2认同)
  • 那不是真的.如果使用HikariConfig对象,则必须在该对象上设置它.如果你直接构造一个HikariDataSource,没有HikariConfig,你可以在HikariDataSource上调用``setRegisterMBeans(true)``.当*not*使用HikariConfig时,在第一次调用``getConnection()`之前在HikariDataSource上设置的配置将被尊重. (2认同)