brettwooldridge / HikariCP

光 HikariCP・A solid, high-performance, JDBC connection pool at last.
Apache License 2.0
19.93k stars 2.93k forks source link

No JMX Operations with spring MBeanExporter #1466

Open kolchanov opened 5 years ago

kolchanov commented 5 years ago

Environment

HikariCP version: 3.4.1
JDK version     : 1.8.0_111
Database        : Oracle
Driver version  : 12.1.0.2

If hikari JMX is exposed with org.springframework.jmx.export.MBeanExporter no operations is published even with property allowPoolSuspension=true

Screenshot 2019-10-11 at 16 38 40
ljluestc commented 3 weeks ago

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jmx.support.RegistrationPolicy;
import org.springframework.management.jmx.SimpleJmxBeanExporter;
import com.zaxxer.hikari.HikariDataSource;

@Configuration
public class DataSourceConfig {

    @Bean
    public HikariDataSource dataSource() {
        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setJdbcUrl("jdbc:oracle:thin:@your-database-url:port:service");
        dataSource.setUsername("your-username");
        dataSource.setPassword("your-password");
        dataSource.setMaximumPoolSize(200);
        dataSource.setMinimumIdle(10);
        dataSource.setConnectionTimeout(30000);
        dataSource.setIdleTimeout(600000);
        dataSource.setMaxLifetime(1800000);
        dataSource.setConnectionTestQuery("SELECT 1");
        dataSource.setRegisterMbeans(true);  // Enable JMX registration
        return dataSource;
    }

    @Bean
    public SimpleJmxBeanExporter simpleJmxBeanExporter(HikariDataSource dataSource) {
        SimpleJmxBeanExporter exporter = new SimpleJmxBeanExporter();
        exporter.setBeans(Collections.singletonMap("dataSource", dataSource));
        exporter.setRegistrationPolicy(RegistrationPolicy.REPLACE_EXISTING);
        return exporter;
    }
}