我对数据库连接池使用以下配置。 使用在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);
我得到了这个堆栈跟踪:
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连接池相关的内容。
我可以尝试下一步的建议吗?
答案 0 :(得分:7)
两件事。两天前针对HikariCP 1.4.0有一个bug reported关于忽略用户定义的池名称(并用自动生成的名称替换)。此错误已修复,但您需要克隆存储库并自行构建,因为它将在下一个版本发布之前显示。
第二件事是,您需要将registerMbeans
设置为true
。以编程方式,这将是setRegisterMbeans(true)
。如果运行现有1.4.0,则将忽略您的用户定义名称,但该池确实将注册为MBean。
答案 1 :(得分:0)
问题在于Hikari配置,您需要检查代理jar。