Meine Spring-Boot-Anwendung muss eine Verbindung zu zwei verschiedenen Datenbanken herstellen. Die erste Datenbank (main) wird auf demselben Server wie die localhost-Anwendung und die andere Datenbank (sekundär) auf einem fernen Server installiert und ist nicht immer verfügbar (für Wartung, Sicherung, Tests usw.).Spring Boot und Hibernate: Starten einer Anwendung, selbst wenn keine Verbindung zur Datenbank verfügbar ist
Ich verwende die folgende Konfiguration (application.properties).
# main connection
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost/?autoReconnect=true&verifyServerCertificate=false&useSSL=false&requireSSL=false
spring.datasource.username=emater
spring.datasource.password=emater
# Keep the connection alive if idle for a long time (needed in production)
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1
# secondary connection
planejamento.datasource.driverClassName=com.mysql.jdbc.Driver
planejamento.datasource.url=jdbc:mysql://10.22.1.4/?verifyServerCertificate=false&useSSL=false&requireSSL=false
planejamento.datasource.username=emater
planejamento.datasource.password=emater
planejamento.datasource.testWhileIdle = false
#config hibernate
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.dialect=org.hibernate.spatial.dialect.mysql.MySQLSpatial56Dialect
spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext
spring.jpa.show-sql=true
spring.jpa.format-sql=true
spring.jpa.use-sql-comments=true
spring.jpa.hibernate.enable_lazy_load_no_trans=true
Beim Initialisieren der Anwendung versucht Hibernate, eine Verbindung zu beiden Datenbanken herzustellen. Wenn die zweite Datenbank zu dem Zeitpunkt nicht verfügbar ist, wird eine Ausnahme ausgelöst und die Anwendungsinitialisierung wird abgebrochen.
Gibt es eine Eigenschaft, die ich verwenden könnte, um zu verhindern, dass meine Anwendung zum Zeitpunkt des Starts abgebrochen wird?
Was soll ich tun?
Sie können versuchen, Ausnahme in Ihrer Hauptmethode abzufangen. –
Dieser Link kann hilfreich sein https://docs.jboss.org/hibernate/orm/4.3/javadocs/org/hibernate/exception/JDBCConnectionException.html –
Hätten Sie ein Beispiel? Wäre es ein Versuch/Fang in der Hauptmethode meiner Anwendung? Wie wäre es? –