1

Spring + hibernate 3+c3p0を実行しています。起動時に、データベースがダウンしている場合、約10分後に例外がスローされます。それまではプログラムはブロックされます...これはかなり一般的な問題であり、解決策が存在する場合は標準的な簡単な方法である必要があるため、Spring xml、Hibernate構成などは含めません。そうでない場合は、重要なコードと構成をトリミングして、ここに貼り付けることができます。誰かがそれについて何か知っていますか?前もって感謝します。


明確にするために:

私が本質的に必要としているのは、DriverManager.setLoginTimeout()関数の周りにc3p0または休止状態、さらにはスプリングにラッパーがあるかどうかを知ることです。または、この機能を提供する機能。ラッパーは、設定などを介して行うことができます。原因(ソケット、データベース、悪天候)に関係なく、X秒以内にデータソースに接続しなかった場合は例外を取得したいだけです。そして、このXを設定する場所を見つけたいと思います。さらに悪いことに、私が使用しているドライバーであるOracleドライバーは、setLoginTimeout()を実装していないため、直接使用できません。私はそれを解決する方法はないことに気づきましたが、手動で自分のタイマースレッドを生成します。誰でも上記の状況を確認できますか?どうもありがとう。

4

1 に答える 1

1

ほとんどの場合、Hibernate/Spring自体とは関係ありません。データベース接続プールは、接続の処理を担当します。

  1. C3P0の設定は何ですか?
  2. どのデータベース/ドライバーを使用していますか?エラーを報告する前にドライバー自体が待機/再試行する原因となるドライバー固有の設定はありますか?
  3. 「データベースがダウンしている」とは「完全にダウンしている」という意味ですか?または、これはある種のソケットタイムアウトが原因である可能性がありますか?

更新(以下のOPの説明に基づく):

DriverManager.setLoginTimeout()Oracleドライバでは使用されません。OracleDataSourceには、代わりに独自のloginTimeout設定があります。

于 2009-10-23T16:05:41.700 に答える