3

データソースにログインタイムアウトを設定すると、どうなりますか?内部でDriverManager.setLoginTimeout()を呼び出しますか?データソースごとのログインタイムアウトを設定することが本当に可能かどうか知りたいので、これを尋ねます。接続したいDBMSが異なり、これらのDBの応答性が異なる場合、接続タイムアウトの許容値が異なると予想するのが妥当ですよね?

答えが「はい」の場合、DriverManager.setLoginTimeot()メソッドが静的である正当な理由がありますか?

4

1 に答える 1

2

このプロパティはperである必要がありますDataSource(ただし、私が見る限り、JDBC仕様でこれについて明示的に言及されていません)。一部のドライバーのDataSource実装は、接続の作成時にDriverManagerを使用しません。

ただし、DriverManager自体は値を処理しないため(保存する場合を除く)、DriverManagerに設定された値をドライバーが明示的に使用する必要があることに注意してください。たとえば、PostgreSQLドライバーは、JDBC url、Propertiesオブジェクト、またはDataSourceプロパティで明示的なタイムアウトが構成されていない場合にのみDriverManager値を使用します。

その理由DriverManager.setLoginTimeout()は、どのドライバーがDriverManager(*)によって実際に使用されているかを制御しないため、それを制御する唯一の方法はDriverManagerを使用することです。

(*)もちろん、クラスパスに追加したドライバー(および、Java 5以前の場合:明示的にロードしたドライバー)を除きます。

于 2012-05-30T13:58:05.390 に答える