Hibernateはデータベースがダウンしたときに例外をスローするのに10分かかります
質問
Spring + hibernate 3 + c3p0を実行しています。起動時に、データベースがダウンしている場合、約10分後に例外がスローされます。それまでプログラムはブロックされています... spring xml、hibernate configurationなどは含めません。これはかなり一般的な問題であり、解決策が存在する場合は標準的な方法でなければならないからです。そうでない場合、重要なコードと構成をトリミングして、ここに貼り付けることができます。誰もそれについて何か知っていますか?事前に感謝します。
明確にするために:
基本的に必要なのは、DriverManager.setLoginTimeout()関数の周りにc3p0またはhibernateにラッパーが存在するか、さらにはスプリングに存在するかを知ることです。または、この機能を提供する機能。ラッパーは、設定または何かを介して可能性があります。原因(ソケット、データベース、悪天候)に関係なく、X秒でデータソースに接続していない場合に例外を取得したいだけです。さらに、このXを設定する場所を見つけたいと思っています。さらに悪いことに、使用しているドライバーであるOracleドライバーはsetLoginTimeout()を実装していないため、直接使用することはできません。私はそれを解決する方法がないことに気づきましたが、自分のタイマースレッドを手動で生成しました。誰でも上記の状況を確認できますか?どうもありがとう。
解決
これは、おそらくHibernate / Spring自体とは関係ありません。データベース接続プールは接続の処理を担当します。
- C3P0の設定は何ですか?
- 使用しているデータベース/ドライバーは何ですか?エラーを報告する前にドライバー自体が待機/再試行する原因となるドライバー固有の設定はありますか?
- "データベースのダウン" 「完全にダウン」という意味ですか?または、これは何らかの種類のソケットタイムアウトによって引き起こされる可能性がありますか?
更新(以下のOPの説明に基づいて):
DriverManager.setLoginTimeout()
は、oracleドライバーでは使用されません。 OracleDataSourceには、独自の loginTimeout設定。