私のデータソースBeanが一定期間使用しなくても問題が発生しています。私の質問は、アプリケーションの起動時にヒットするデータソースBeanをどのようにインスタンス化できるかです。春のデータ、MySQL、接続が8時間休止した後に終了する
起動時にBeanを設定する方法は次のとおりです。
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource dataSource(){
byte[] encryptedFile = fileRetriever.getFile(bucket, key);
String unencryptedJson = fileDecrypter.decryptFile(encryptedFile);
JSONParser parser = new JSONParser();
JSONObject jsonObject = null;
try{
jsonObject = (JSONObject) parser.parse(unencryptedJson);
}catch (Exception ex){
log.error(ex.getMessage());
}
String password = (String)jsonObject.get("password");
DataSource ds = DataSourceBuilder
.create()
.url(url)
.username(userName)
.password(password)
.build();
return ds;
}
このクラスには、@Configuration
注釈もあります。
我々は、サービスが非アクティブ後にバウンスする必要があり、この問題を持っていない他のアプリケーションを持っていますが、彼らはまた、このようにデータソースを設定し、application.property
ファイルで指定されたすべての詳細を持っていません
私は30秒ごとにヒットするリポジトリを使用するカスタムヘルスチェックを追加しました。データソースBeanを有効にしておく必要がありますが、それを再構築する方法が必要になります。
ありがとうございます。
までごapplication.propertiesに以下を追加することができます。そうすれば、アイドル状態の接続は常にアクティブになります。 – Sanj
ベストアイデアではありませんが、データベースを5〜8時間ごとにポーリングして接続を維持できます。 – DwB
ここでのアイデアは、アイドル状態の接続を維持することだと思います。頻度は、必要に応じて数分または数時間にすることができます。 – Sanj