Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在spring boot中使用application.yml配置两个不同的HIKAridataSource时,一个数据源的连接关闭错误_Java_Spring_Spring Boot_Hikaricp - Fatal编程技术网

Java 在spring boot中使用application.yml配置两个不同的HIKAridataSource时,一个数据源的连接关闭错误

Java 在spring boot中使用application.yml配置两个不同的HIKAridataSource时,一个数据源的连接关闭错误,java,spring,spring-boot,hikaricp,Java,Spring,Spring Boot,Hikaricp,启动应用程序时,它会显示错误: 提取数据库名称时出错-返回空错误代码 org.springframework.jdbc.support.MetaDataAccessException: 提取数据库元数据时出错;嵌套异常为com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:连接关闭后不允许进行任何操作 原因:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConn

启动应用程序时,它会显示错误:

提取数据库名称时出错-返回空错误代码 org.springframework.jdbc.support.MetaDataAccessException:

提取数据库元数据时出错;嵌套异常为com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:连接关闭后不允许进行任何操作

原因:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:连接关闭后不允许进行任何操作

I have following configuration in my yml file:

datasource:
   db1:
     type: com.zaxxer.hikari.HikariDataSource
     url: ${URL}?useUnicode=true&characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull
        username: ${USER}
        password: ${PSSWD}
        driverClassName: com.mysql.jdbc.Driver
        hikari:
          cachePrepStmts: true
          prepStmtCacheSize: 250
          prepStmtCacheSqlLimit: 2048
          useServerPrepStmts: true
          poolName: pool1
          idleTimeout: 30000
          connectionTimeout: 30000
          minimumIdle: 5
        jpa:
            database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
            database: MYSQL
            show-sql: true
            properties:
                hibernate.id.new_generator_mappings: true
                hibernate.cache.use_second_level_cache: false
                hibernate.cache.use_query_cache: false
      db2:
        type: com.zaxxer.hikari.HikariDataSource
        url: ${URL2}?useUnicode=true&characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull
        username: ${USER2}
        password: ${PSSWD2}
        driverClassName: com.mysql.jdbc.Driver
        hikari:
          cachePrepStmts: true
          prepStmtCacheSize: 250
          prepStmtCacheSqlLimit: 2048
          useServerPrepStmts: true
          poolName: pool2
          idleTimeout: 30000
          connectionTimeout: 30000
          minimumIdle: 5
        jpa:
            database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
            database: MYSQL
            show-sql: true
            properties:
                hibernate.id.new_generator_mappings: true
                hibernate.cache.use_second_level_cache: false
                hibernate.cache.use_query_cache: false


@Configuration
@EnableJpaRepositories(
        basePackages = {"com.xx.attributes.repository.primary", "com.xx.attributes.repository.primary.custom"},
        entityManagerFactoryRef = "primaryEM",
        transactionManagerRef = "primaryTM"
)
public class PrimaryDataSource {
    @Autowired
    private Environment env;

    private Properties jpaProperties() {
        Properties properties = new Properties();
        properties.put("database-platform", env.getRequiredProperty("spring.datasource.db1.jpa.database-platform"));
        properties.put("database", env.getRequiredProperty("spring.datasource.db1.jpa.database"));
        properties.put("show-sql", env.getRequiredProperty("spring.datasource.db1.jpa.show-sql"));
        properties.put("hibernate.id.new_generator_mappings", env.getRequiredProperty("spring.datasource.db1.jpa.properties.hibernate.id.new_generator_mappings"));
        properties.put("hibernate.cache.use_query_cache", env.getRequiredProperty("spring.datasource.db1.jpa.properties.hibernate.cache.use_query_cache"));
        properties.put("hibernate.cache.use_second_level_cache", env.getRequiredProperty("spring.datasource.db1.jpa.properties.hibernate.cache.use_second_level_cache"));
        if (env.getProperty("spring.datasource.db1.jpa.properties.hibernate.dialect") != null) {
            properties.put("hibernate.dialect", env.getProperty("spring.datasource.db1.jpa.properties.hibernate.dialect"));
        }
        return properties;
    }

    @Primary
    @Bean(name = "primaryEM")
    public LocalContainerEntityManagerFactoryBean db1EntityManager() {
        LocalContainerEntityManagerFactoryBean em
                = new LocalContainerEntityManagerFactoryBean();
        em.setDataSource(firstDataSource());
        em.setPackagesToScan(
                new String[] { "com.xx.attributes.domain.primary" });

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        em.setJpaVendorAdapter(vendorAdapter);
        em.setJpaProperties(jpaProperties());
        em.setPersistenceUnitName(DefaultPersistenceUnitManager.ORIGINAL_DEFAULT_PERSISTENCE_UNIT_NAME);
        return em;
    }

    @Primary
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.db1")
    public DataSource firstDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Primary
    @Bean(name = "primaryTM")
    public PlatformTransactionManager db1TransactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
        transactionManager.setEntityManagerFactory(db1EntityManager().getObject());
        return transactionManager;
    }
}

@Configuration
@EnableJpaRepositories(
        basePackages = "com.xx.attributes.repository.secondary",
        entityManagerFactoryRef = "secondaryEM",
        transactionManagerRef = "secondaryTM"
)
public class SecondaryDataSource {
    @Autowired
    private Environment env;

    private Properties jpaProperties2() {
        Properties properties = new Properties();
        properties.put("database-platform", env.getRequiredProperty("spring.datasource.db2.jpa.database-platform"));
        properties.put("database", env.getRequiredProperty("spring.datasource.db2.jpa.database"));
        properties.put("show-sql", env.getRequiredProperty("spring.datasource.db2.jpa.show-sql"));
        properties.put("hibernate.cache.use_query_cache", env.getRequiredProperty("spring.datasource.db2.jpa.properties.hibernate.cache.use_query_cache"));
        properties.put("hibernate.id.new_generator_mappings", env.getRequiredProperty("spring.datasource.db2.jpa.properties.hibernate.id.new_generator_mappings"));
        properties.put("hibernate.cache.use_second_level_cache", env.getRequiredProperty("spring.datasource.db2.jpa.properties.hibernate.cache.use_second_level_cache"));
        if (env.getProperty("spring.datasource.db2.jpa.properties.hibernate.dialect") != null) {
            properties.put("hibernate.dialect", env.getProperty("spring.datasource.db2.jpa.properties.hibernate.dialect"));
        }
        return properties;
    }

    @Bean(name = "secondaryEM")
    public LocalContainerEntityManagerFactoryBean db2EntityManager() {
        LocalContainerEntityManagerFactoryBean em
                = new LocalContainerEntityManagerFactoryBean();
        em.setDataSource(secondDataSource());
        em.setPackagesToScan(new String[] { "com.xx.attributes.domain.secondary" });

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        em.setJpaVendorAdapter(vendorAdapter);
        em.setJpaProperties(jpaProperties2());
        em.setPersistenceUnitName("secondary");
        return em;
    }

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.db2")
    public DataSource secondDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "secondaryTM")
    public PlatformTransactionManager db2TransactionManager() {
        JpaTransactionManager transactionManager
                = new JpaTransactionManager();
        transactionManager.setEntityManagerFactory(
                db2EntityManager().getObject());
        return transactionManager;
    }
}