5

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

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);          

我得到这个堆栈跟踪:

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)

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

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

有什么建议我可以尝试下一步吗?

4

2 回答 2

7

两件事情。就在两天前,有一个针对 HikariCP 1.4.0 的错误报告,即用户定义的池名称被忽略(并替换为自动生成的名称)。此错误已修复,但您需要克隆存储库并自己构建它,因为它直到下一个版本才会出现。

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

于 2014-06-21T18:55:45.223 回答
0

问题出在 Hikari 配置上,您需要检查代理 jar。

于 2014-06-20T09:00:32.400 回答