SpringBoot-再起動後にデータベースに再接続します

stergipe

10分ごとに実行されるSpringBatchアプリケーションがあります。REST APIからデータを取得し、これらのデータをデータベースに保存します。

さて、私の問題は今どこにありますか?

データベース(Oracle)が再起動したり、オフラインになったりすることがあります(実際にはわかりません)。しかし、アプリケーションはデータベースに再接続していないようです。アイドルモードのままです。

Spring Boot:2.1.2.RELEASE

application.ymlは次のようになります。

app:
  database:
    jdbc-url: jdbc:oracle:thin:@<host>:<port>:<db>
    username: <username>
    password: <password>
    driver-class-name: oracle.jdbc.OracleDriver
    options:
      show-sql: true
      ddl-auto: none
      dialect: org.hibernate.dialect.Oracle12cDialect

次に、データソースを次のように構成します。

    public DataSource dataSource() {
        HikariConfig configuration = new HikariConfig();

        configuration.setJdbcUrl(properties.getJdbcUrl());
        configuration.setUsername(properties.getUsername());
        configuration.setPassword(properties.getPassword());
        configuration.setDriverClassName(properties.getDriverClassName());
        configuration.setLeakDetectionThreshold(60 * 1000);

        return new HikariDataSource(configuration);
    }

    public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource) {
        LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
        em.setDataSource(dataSource);

        em.setPackagesToScan("xxx.xxx.xx");
        JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        em.setJpaVendorAdapter(vendorAdapter);

        Properties additionalProperties = properties();
        em.setJpaProperties(additionalProperties);

        return em;
    }

    public PlatformTransactionManager transactionManager(EntityManagerFactory emf) {
        return new JpaTransactionManager(emf);
    }

    private Properties properties() {
        Properties additionalProperties = new Properties();
        additionalProperties.setProperty("hibernate.hbm2ddl.auto", properties.getOptions().getDdlAuto());
        additionalProperties.setProperty("hibernate.dialect", properties.getOptions().getDialect());
        additionalProperties.setProperty("hibernate.show_sql", properties.getOptions().getShowSql());
        return additionalProperties;
    }

正直なところ、ここで構成に何か問題があったかどうかはわかりません。

ありがとうございました!

user7294900

setMaxLifetimemaxLifetimeを30分間設定する必要があります

 configuration.setMaxLifetime(108000);

プロパティは、プール内の接続の最大存続期間を制御します。接続がこのタイムアウトに達すると、最近使用された場合でも、プールからリタイアされます使用中の接続がリタイアすることはなく、アイドル状態のときにのみ削除されます。

この値を設定することを強くお勧めします。この値は、データベースまたはインフラストラクチャに課せられた接続時間制限よりも少なくとも30秒短くする必要があります。

デフォルトでは、Oracleは接続の最大存続期間を強制しません

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Springboot 2.0-データベースへの再接続を無効にする

分類Dev

springbootサービスでさまざまなデータベースに動的に接続します

分類Dev

SpringBootはデータベースを動的に変更します

分類Dev

SpringBootはSpringBootをpostgresqlデータベースに接続できません

分類Dev

SpringBoot-特定のクエリをデータベースに適用します

分類Dev

データベースに接続しないようにSpringBootを構成する方法

分類Dev

SpringBootはIntellijを使用してMYSQLデータベースに接続しません

分類Dev

springbootを使用してMySQLデータベースに接続できませんか?

分類Dev

SpringBootはデータソース接続を確認します

分類Dev

SpringBootを使用したPostgresql-アプリケーションを起動するたびにデータベースが空になります

分類Dev

Springbootアプリケーションは、DBの再起動に失敗します

分類Dev

SpringBootアプリケーションからローカルMySQLデータベースへの接続中にエラーが発生しました

分類Dev

Springbootは日付をデータベースに保存して1日休みます

分類Dev

SpringBootを介してDockerDesktop Kubernetes(Windows)サービスをローカルのPostgresデータベースに接続できません

分類Dev

Mavenビルド中にデータベースへの接続を除外するSpringBoot

分類Dev

接続プールの設定。データベースに再接続します

分類Dev

データベースを有効にした後、C#.netCoreがOracleに再接続します

分類Dev

Springbootを使用してサンプルデータをデータベースに追加する方法

分類Dev

AngularjsとSpringBootを使用してデータベースにデータを保存する際の問題

分類Dev

SpringBootアプリケーションはweblogicoracleデータソースに接続する必要があります

分類Dev

MySQLリモートデータベースへのSpringBoot接続

分類Dev

データベースの再起動後、JDBCプールデータソースへの再接続を試みます

分類Dev

IntelliJIDEAのSpringBootプロジェクトは、再起動後に動作を停止します

分類Dev

SpringBootとの統合テスト中にデータベースにテストデータを入力する

分類Dev

SpringBootはデータベースのnull値を処理します

分類Dev

springboot、jpa、thymeleafを使用してデータベースに画像をアップロードする

分類Dev

SpringBootを使用してH2データベースにテーブルを作成する際の問題

分類Dev

mysqlデータベースを指すようにデータソースを変更するSpringBoot

分類Dev

SpringBootデータソース

Related 関連記事

  1. 1

    Springboot 2.0-データベースへの再接続を無効にする

  2. 2

    springbootサービスでさまざまなデータベースに動的に接続します

  3. 3

    SpringBootはデータベースを動的に変更します

  4. 4

    SpringBootはSpringBootをpostgresqlデータベースに接続できません

  5. 5

    SpringBoot-特定のクエリをデータベースに適用します

  6. 6

    データベースに接続しないようにSpringBootを構成する方法

  7. 7

    SpringBootはIntellijを使用してMYSQLデータベースに接続しません

  8. 8

    springbootを使用してMySQLデータベースに接続できませんか?

  9. 9

    SpringBootはデータソース接続を確認します

  10. 10

    SpringBootを使用したPostgresql-アプリケーションを起動するたびにデータベースが空になります

  11. 11

    Springbootアプリケーションは、DBの再起動に失敗します

  12. 12

    SpringBootアプリケーションからローカルMySQLデータベースへの接続中にエラーが発生しました

  13. 13

    Springbootは日付をデータベースに保存して1日休みます

  14. 14

    SpringBootを介してDockerDesktop Kubernetes(Windows)サービスをローカルのPostgresデータベースに接続できません

  15. 15

    Mavenビルド中にデータベースへの接続を除外するSpringBoot

  16. 16

    接続プールの設定。データベースに再接続します

  17. 17

    データベースを有効にした後、C#.netCoreがOracleに再接続します

  18. 18

    Springbootを使用してサンプルデータをデータベースに追加する方法

  19. 19

    AngularjsとSpringBootを使用してデータベースにデータを保存する際の問題

  20. 20

    SpringBootアプリケーションはweblogicoracleデータソースに接続する必要があります

  21. 21

    MySQLリモートデータベースへのSpringBoot接続

  22. 22

    データベースの再起動後、JDBCプールデータソースへの再接続を試みます

  23. 23

    IntelliJIDEAのSpringBootプロジェクトは、再起動後に動作を停止します

  24. 24

    SpringBootとの統合テスト中にデータベースにテストデータを入力する

  25. 25

    SpringBootはデータベースのnull値を処理します

  26. 26

    springboot、jpa、thymeleafを使用してデータベースに画像をアップロードする

  27. 27

    SpringBootを使用してH2データベースにテーブルを作成する際の問題

  28. 28

    mysqlデータベースを指すようにデータソースを変更するSpringBoot

  29. 29

    SpringBootデータソース

ホットタグ

アーカイブ