2017-09-14 2 views
0

Ich habe eine Spring-Boot-Anwendung mit 3 Webservices, die auf zwei verschiedene Datenbanken zugreifen, die in der Datei application.properties deklariert sind.SpringBoot Fehler im Verbindungspool verwalten

Wenn ich die Anwendung ausführen, wenn eine Verbindung fehlschlägt, beendet es die gesamte Anwendung, selbst wenn eine der Verbindungen funktioniert.

Ich muss eine Verbindung mit allen Datenbanken herstellen, und wenn eine Datenbank nicht funktioniert, versuchen Sie erneut zu verbinden, aber die Anwendung kann nicht beendet werden.

Ich habe diese Konfigurationen versucht, aber ohne Erfolg:

testOnBorrow=true 
validationQuery=SELECT 1 
timeBetweenEvictionRunsMillis = 60000 

Ich habe auch eine DataBaseConfig.java mit

@Configuration 
public class DataBaseConfig { 


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

@Bean(name = "sqliteDb") 
@ConfigurationProperties(prefix="spring.secondDatasource") 
public DataSource sqliteDataSource() { 
    return DataSourceBuilder.create().build(); 
} 


@Bean(name = "cli") 
    public JdbcTemplate slaveJdbcTemplate(@Qualifier("mysqlDb") DataSource datasource) { 
     return new JdbcTemplate(datasource); 
    } 

    @Bean(name = "usr") 
    @Primary 
    public JdbcTemplate masterJdbcTemplate(@Qualifier("sqliteDb") DataSource secondDatasource) { 
     return new JdbcTemplate(secondDatasource); 
    } 
} 

Console Fehler:

Unable to create initial connections of pool 
HHH000342: Could not obtain connection to query metadata : ORA-01034: ORACLE not available 
ORA-27101: shared memory realm does not exist 
org.springframework.beans.factory.BeanCreationException: Error creating bean  with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] 

Antwort

0

die Verbindungspools erstellen programmatisch, anstatt Spring Boot automatisch für Sie zu konfigurieren. Dann können Sie alle Fehler beim Erstellen der Datenquelle in Ihrem Code behandeln. Siehe:

Configure DataSource programmatically in Spring Boot

Alternativ kann eine einzelne Verbindung Datenquelle zur Laufzeit erstellen, anstatt beim Booten, und fügen Sie Wiederholungslogik im Fall eines Fehlers (haben einen Blick auf Frühling Retry)

+0

Ich bin neu mit Frühling habe ich mit meiner DatenbankConfig Datei aktualisiert – lorenag83