设置 Hikari MetricRegistry 时出错
Error on setting Hikari MetricRegistry
我正在尝试在 Play 中为 Hikary 使用 MetricRegistry! Java 中的应用程序如 Hikari 的 GitHub page 中所述。这基本上就是我所做的:
HikariDataSource dataSource = ((HikariDataSource) db.dataSource());
dataSource.setMetricRegistry(metricRegistry);
但是 Hikari 抱怨说 MetricRegistry 不应该在构建之后设置。这是我收到的错误消息:
java.lang.IllegalStateException: The configuration of the pool is
sealed once started. Use HikariConfigMXBean for runti me changes.
是否有更好的方法来设置此 属性,例如,通过在应用程序配置文件中设置池?
您可以为此目的使用@PostConstruct:
@Configuration
public class DataSourceConfiguration {
private final MetricRegistry metricRegistry;
private final DataSource dataSource;
public DataSourceConfiguration(final MetricRegistry metricRegistry, final DataSource dataSource) {
this.metricRegistry = metricRegistry;
this.dataSource = dataSource;
}
@PostConstruct
public void setUpHikariWithMetrics() {
if (dataSource instanceof HikariDataSource) {
((HikariDataSource) dataSource).setMetricRegistry(metricRegistry);
}
}
}
我正在尝试在 Play 中为 Hikary 使用 MetricRegistry! Java 中的应用程序如 Hikari 的 GitHub page 中所述。这基本上就是我所做的:
HikariDataSource dataSource = ((HikariDataSource) db.dataSource());
dataSource.setMetricRegistry(metricRegistry);
但是 Hikari 抱怨说 MetricRegistry 不应该在构建之后设置。这是我收到的错误消息:
java.lang.IllegalStateException: The configuration of the pool is sealed once started. Use HikariConfigMXBean for runti me changes.
是否有更好的方法来设置此 属性,例如,通过在应用程序配置文件中设置池?
您可以为此目的使用@PostConstruct:
@Configuration
public class DataSourceConfiguration {
private final MetricRegistry metricRegistry;
private final DataSource dataSource;
public DataSourceConfiguration(final MetricRegistry metricRegistry, final DataSource dataSource) {
this.metricRegistry = metricRegistry;
this.dataSource = dataSource;
}
@PostConstruct
public void setUpHikariWithMetrics() {
if (dataSource instanceof HikariDataSource) {
((HikariDataSource) dataSource).setMetricRegistry(metricRegistry);
}
}
}