- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以,我已经配置了我的 Spring Boot 应用程序来处理多个数据源,一切都很好,但我注意到,当我启动应用程序时,仅在需要时才启动主数据源的池,而不启动其他数据源的池(有时结果为空指针...)
2020-03-05 15:34:02.478 INFO 11172 --- [ main] be.MyApp.ESPI.EspiApplication :
Starting EspiApplication on BESVC-HQ2000928 with PID 11172 (C:\Users\...\Documents\MyApp\Others\ESPI\ESPI\target\classes started by ... in C:\Users\...\Documents\MyApp\Others\ESPI\ESPI)
2020-03-05 15:34:02.483 INFO 11172 --- [ main] be.MyApp.ESPI.EspiApplication : The following profiles are active: dev
2020-03-05 15:34:03.149 INFO 11172 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2020-03-05 15:34:03.233 INFO 11172 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 65ms. Found 2 JPA repository interfaces.
2020-03-05 15:34:03.811 INFO 11172 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2020-03-05 15:34:04.433 INFO 11172 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2020-03-05 15:34:04.444 INFO 11172 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2020-03-05 15:34:04.444 INFO 11172 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.30]
2020-03-05 15:34:04.603 INFO 11172 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2020-03-05 15:34:04.603 INFO 11172 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 2047 ms
2020-03-05 15:34:04.761 WARN 11172 --- [ main] com.zaxxer.hikari.HikariConfig : FirstPool - maxLifetime is less than 30000ms, setting to default 1800000ms.
2020-03-05 15:34:04.761 INFO 11172 --- [ main] com.zaxxer.hikari.HikariDataSource : FirstPool - Starting...
2020-03-05 15:34:05.095 INFO 11172 --- [ main] com.zaxxer.hikari.pool.PoolBase : FirstPool - Driver does not support get/set network timeout for connections. (oracle.jdbc.driver.T4CConnection.getNetworkTimeout()I)
2020-03-05 15:34:05.099 INFO 11172 --- [ main] com.zaxxer.hikari.HikariDataSource : FirstPool - Start completed.
2020-03-05 15:34:05.159 INFO 11172 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]
2020-03-05 15:34:05.243 INFO 11172 --- [ main] org.hibernate.Version : HHH000412: Hibernate Core {5.4.10.Final}
2020-03-05 15:34:05.414 INFO 11172 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
2020-03-05 15:34:05.554 INFO 11172 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.Oracle12cDialect
2020-03-05 15:34:06.519 INFO 11172 --- [ main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2020-03-05 15:34:06.526 INFO 11172 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2020-03-05 15:34:06.853 WARN 11172 --- [ main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2020-03-05 15:34:06.947 INFO 11172 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2020-03-05 15:34:07.115 INFO 11172 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2020-03-05 15:34:07.116 INFO 11172 --- [ main] be.myapp.ESPI.EspiApplication : Started EspiApplication in 5.135 seconds (JVM running for 5.744)
2020-03-05 15:34:17.044 INFO 11172 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2020-03-05 15:34:17.044 INFO 11172 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2020-03-05 15:34:17.052 INFO 11172 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 8 ms
2020-03-05 15:34:17.087 WARN 11172 --- [nio-8080-exec-1] com.zaxxer.hikari.HikariConfig : SecondPool- maxLifetime is less than 30000ms, setting to default 1800000ms.
2020-03-05 15:34:17.087 INFO 11172 --- [nio-8080-exec-1] com.zaxxer.hikari.HikariDataSource : SecondPool- Starting...
2020-03-05 15:34:17.176 INFO 11172 --- [nio-8080-exec-1] com.zaxxer.hikari.pool.PoolBase : SecondPool- Driver does not support get/set network timeout for connections. (oracle.jdbc.driver.T4CConnection.getNetworkTimeout()I)
2020-03-05 15:34:17.178 INFO 11172 --- [nio-8080-exec-1] com.zaxxer.hikari.HikariDataSource : SecondPool- Start completed.
如您所见,FirstPool 已启动。 Spring 应用程序启动。然后,仅在需要时才启动 SecondPool...我想知道如何在应用程序启动之前强制启动池?
编辑:我的属性文件是这样的:
# DataSource definitions :
first.datasource.jdbc-url=jdbc:oracle:thin:@*a host*
first.datasource.username=user1
first.datasource.password=xxxxxxxxx
first.datasource.poolName=FirstPool
first.datasource.maximumPoolSize=100
first.datasource.maxLifetime=10000
second.datasource.jdbc-url=jdbc:oracle:thin:@*another host*
second.datasource.username=user2
second.datasource.password=xxxxxxxxx
second.datasource.poolName=SecondPool
second.datasource.maximumPoolSize=100
second.datasource.maxLifetime=10000
第二部分:
# Profile definition
spring.profiles.active=@spring.profiles.active@
# JPA definitions
spring.jpa.show-sql=true
spring.jpa.database=oracle
# DataSource
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.dataSourceClassName=oracle.jdbc.pool.OracleDataSource
spring.datasource.hikari.dataSourceProperties.implicitCachingEnabled=true
spring.datasource.hikari.dataSourceProperties.fastConnectionFailoverEnabled=true
# Oracle specifics
oracle.net.tns_admin=${ORACLE_HOME}/NETWORK/ADMIN
处理数据库配置的配置类:
@Configuration
@PropertySource({ "classpath:application.properties", "classpath:application-${spring.profiles.active}.properties"})
@Primary
public class DBConfiguration {
@Bean(name = "FirstDataSource")
@ConfigurationProperties("first.datasource")
@Primary
public HikariDataSource FirstDataSource() {
return (HikariDataSource) DataSourceBuilder.create().build();
}
@Bean(name = "SecondDataSource")
@ConfigurationProperties("second.datasource")
public HikariDataSource SecondDataSource() {
return (HikariDataSource) DataSourceBuilder.create().build();
}
@Bean(name="FirstTM")
@Autowired
@Primary
DataSourceTransactionManager FirstTM(@Qualifier ("FirstDataSource") DataSource datasource) {
DataSourceTransactionManager txm = new DataSourceTransactionManager(datasource);
return txm;
}
@Bean(name="SecondTM")
@Autowired
DataSourceTransactionManager SecondTM(@Qualifier("SecondDataSource") DataSource datasource) {
DataSourceTransactionManager txm = new DataSourceTransactionManager(datasource);
return txm;
}
}
最佳答案
我找到了答案。
因此,首先,数据源全部创建,但是,附加到它的池在询问之前不会创建。所以我们的想法是在启动应用程序时强制它们初始化。
可以这样实现(参见 How to configure hikari pool for eager initialization? ):
您可以使用ApplicationLoader
并在启动时获取连接:
@Component
public class HikariLoader implements ApplicationRunner {
private final HikariDataSource hikariDataSource;
@Autowired
public HikariLoader(HikariDataSource hikariDataSource) {
this.hikariDataSource = hikariDataSource;
}
@Autowired
public void run(ApplicationArguments args) throws SQLException {
hikariDataSource.getConnection();
}
}
关于java - HikariCP - 多个数据源,仅启动主数据源池(Spring Boot),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60547923/
我试图记录当前事件连接的数量。我正在使用 com.zaxxer.hikari.HikariJNDIFactory作为我的数据源工厂。 final Context context = new Initi
使用 Hibernate 4.3.1,Hikari 2.3.2。 我已经在 hibernate 持久性 xml 中配置了这个 ... 这在我的 log4j.properties 中 log4j.
我使用 Spring-boot 版本 2.0.2 来制作具有默认连接池 HikariCP 的 Web 应用程序。HikariCP 调试日志显示收集连接大小为 2,但 Spring Boot 指标显示连
我尝试将 java 1.6/1.7 切换到 Hikari-CP 但我收到以下错误: Caused by: java.sql.SQLException: No suitable driver a
我正在使用 Spring Boot (1.5.6)、Hibernate、Postgres、Hikari (2.7.8)。我的配置是: spring.datasource.hikari.minimumI
我的 application.properties 文件中有以下内容 spring.datasource.hikari.minimum-idle= 10 spring.datasource.hikar
我正在尝试在Grails应用程序中将Teradata与HikariCP集成在一起,并遇到问题。我可以使用默认的Grails连接池或数据源以相同的配置连接到Teradata。 我也尝试调整连接超时。 使
我正在使用 hikariCP,我可以在 housekeeping 中看到最大连接数为 10,但计算不匹配,如下所示,在 pool-2 中,我可以看到总共 10 个连接,但正在等待 24 个,这是一个问
我使用jpa+hibernate+hikariCP。今天我收到连接关闭错误。我设置了 connectionTimeout 和 ideleTimeout 属性(hikari)。如果在此期间使用不执行任何
我的 application.properties 文件中有以下内容 spring.datasource.hikari.minimum-idle= 10 spring.datasource.hikar
我想用 HikariPC 替换 BoneCP。从 here 下载 tar.gz并提取。我不知道这是否是一个正确的命令,但在我运行的 hikaricp-java6 目录中 $ mvn clean com
我有某种集成测试可以启动我的服务,但不进行实际的数据库调用。 我得到这样的异常(exception): [ main] 11:04:47,368 ERROR HikariPool:566 -
我正在研究 HikariCP 在我的一个项目中使用它。 statement cache section github 中项目页面的说明说它不支持连接池级别的准备好的语句缓存。 但是initializa
我正在开发一款在 Java 服务器上运行的游戏。对于数据库池,我使用的是 HikariCP,这是一个优秀的库,但它现在以我的方式抛出以下错误: [Hikari housekeeper (pool Hi
我一直在我的 spring boot 应用程序上使用 HikariCP,我开始使用 JMeter 进行一些负载测试。 我注意到我第一次运行测试时一切顺利,每个请求大约需要 30 毫秒。 但是每次我针对
我通过 hikari-cp Clojure 库在 Clojure 应用程序中使用 HikariCP。 该应用程序为多个客户端提供服务,这些客户端都有自己的 MySQL 数据库和数据库用户。每个客户端都
问题描述 我正在 Play Framework 应用程序中运行单元测试。经过几次测试后,它们开始失败,原因是达到了 100 个打开连接的 PostgreSQL 限制。每个单元测试都有一个 10 的连接
我将 springboot 与 HikariCP 一起使用,但过了一会儿我的应用程序崩溃了,我得到了错误: org.springframework.transaction.CannotCreateTr
我们的项目中有 Spring-boot/Hibernate/PostgreSQL 应用程序,并使用 Hikari 作为连接池。我们不断遇到以下问题:几个小时后事件连接数增长到极限,我们得到这样的错误(
所以,在 Google 和 Github 上搜索答案后,我对大多数人如何知道如何使用 HikariCP 感到困惑。我似乎找不到任何有关 HikariCP 的直接文档。 我的问题是:如何在没有 JDBC
我是一名优秀的程序员,十分优秀!