public class SingleConnectionDataSource extends DriverManagerDataSource implements SmartDataSource, DisposableBean
SmartDataSource の実装。明らかに、これはマルチスレッド対応ではありません。 シャットダウン時に、誰かが close() メソッドを介して基礎となる接続を閉じる必要があることに注意してください。SmartDataSource に対応している(たとえば DataSourceUtils.releaseConnection を使用している)場合、クライアントコードは接続ハンドルで close を呼び出しません。
永続化ツールを使用する場合など、クライアントコードがプールされた接続を想定して close() を呼び出す場合は、"suppressClose" を "true" に設定します。これにより、物理的な接続ではなく、クローズ抑制プロキシが返されます。
これは主にテスト用です。例: DataSource で動作することを期待するコードについて、アプリケーションサーバーの外で簡単にテストできます。DriverManagerDataSource とは対照的に、常に同じ接続を再利用し、物理接続の過剰な作成を回避します。
getConnection(), Connection.close(), DataSourceUtils.releaseConnection(java.sql.Connection, javax.sql.DataSource)logger| コンストラクターと説明 |
|---|
SingleConnectionDataSource()Bean スタイルの構成のコンストラクター。 |
SingleConnectionDataSource(java.sql.Connection target, boolean suppressClose) 指定された接続で新しい SingleConnectionDataSource を作成します。 |
SingleConnectionDataSource(java.lang.String url, boolean suppressClose) 指定された標準 DriverManager パラメーターで新しい SingleConnectionDataSource を作成します。 |
SingleConnectionDataSource(java.lang.String url, java.lang.String username, java.lang.String password, boolean suppressClose) 指定された標準 DriverManager パラメーターで新しい SingleConnectionDataSource を作成します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
void | destroy() 基になる接続を閉じます。 |
protected java.lang.Boolean | getAutoCommitValue() 返された接続の "autoCommit" 設定を上書きする必要があるかどうかを返します。 |
protected java.sql.Connection | getCloseSuppressingConnectionProxy(java.sql.Connection target) すべてのメソッド呼び出しを委譲するプロキシを使用して、指定された接続をラップしますが、クローズ呼び出しを抑制します。 |
java.sql.Connection | getConnection() この実装は、この DataSource のデフォルトのユーザー名とパスワードを使用して getConnectionFromDriver に委譲します。 |
java.sql.Connection | getConnection(java.lang.String username, java.lang.String password) カスタムのユーザー名とパスワードを指定しても、単一の接続では意味がありません。 |
void | initConnection()DriverManager を介して基になる接続を初期化します。 |
protected boolean | isSuppressClose() 返された接続がクローズ抑制プロキシか物理接続かを返します。 |
protected void | prepareConnection(java.sql.Connection con) 公開する前に、所定の接続を準備します。 |
void | resetConnection() 基礎となる共有接続をリセットして、次のアクセスで再初期化します。 |
void | setAutoCommit(boolean autoCommit) 返された接続の "autoCommit" 設定を上書きするかどうかを設定します。 |
void | setSuppressClose(boolean suppressClose) 返された接続をクローズ抑制プロキシにするか物理接続にするかを設定します。 |
boolean | shouldClose(java.sql.Connection con) これは単一の接続です。「プール」に戻るときに接続を閉じないでください。 |
getConnectionFromDriver, getConnectionFromDriverManager, setDriverClassNamegetCatalog, getConnectionFromDriver, getConnectionProperties, getPassword, getSchema, getUrl, getUsername, setCatalog, setConnectionProperties, setPassword, setSchema, setUrl, setUsernamegetLoginTimeout, getLogWriter, getParentLogger, isWrapperFor, setLoginTimeout, setLogWriter, unwrapclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitpublic SingleConnectionDataSource()
public SingleConnectionDataSource(java.lang.String url,
java.lang.String username,
java.lang.String password,
boolean suppressClose)url - DriverManager へのアクセスに使用する JDBC URLusername - DriverManager へのアクセスに使用する JDBC ユーザー名 password - DriverManager へのアクセスに使用する JDBC パスワード suppressClose - 返された接続がクローズ抑制プロキシまたは物理接続である場合 DriverManager.getConnection(String, String, String)public SingleConnectionDataSource(java.lang.String url,
boolean suppressClose)url - DriverManager へのアクセスに使用する JDBC URLsuppressClose - 返された接続がクローズ抑制プロキシまたは物理接続である場合 DriverManager.getConnection(String, String, String)public SingleConnectionDataSource(java.sql.Connection target,
boolean suppressClose)target - 基になるターゲット接続 suppressClose - Connection を close() 呼び出しを抑制する Connection でラップする必要がある場合 (プールされた接続を予期しているが、SmartDataSource インターフェースを知らないアプリケーションで、通常の close() の使用を可能にする)public void setSuppressClose(boolean suppressClose)
protected boolean isSuppressClose()
public void setAutoCommit(boolean autoCommit)
@Nullable protected java.lang.Boolean getAutoCommitValue()
null public java.sql.Connection getConnection()
throws java.sql.SQLExceptionAbstractDriverBasedDataSourcegetConnectionFromDriver に委譲します。javax.sql.DataSource 内の getConnection AbstractDriverBasedDataSource の getConnection java.sql.SQLExceptionAbstractDriverBasedDataSource.getConnectionFromDriver(String, String), AbstractDriverBasedDataSource.setUsername(java.lang.String), AbstractDriverBasedDataSource.setPassword(java.lang.String)public java.sql.Connection getConnection(java.lang.String username,
java.lang.String password)
throws java.sql.SQLExceptionjavax.sql.DataSource 内の getConnection AbstractDriverBasedDataSource の getConnection java.sql.SQLExceptionAbstractDriverBasedDataSource.getConnectionFromDriver(String, String)public boolean shouldClose(java.sql.Connection con)
SmartDataSource 内の shouldClose con - 確認する接続 Connection.close()public void destroy()
この Bean は DisposableBean を実装しているため、Bean ファクトリは、キャッシュされたシングルトンの破棄時にこれを自動的に呼び出します。
DisposableBean 内の destroy public void initConnection()
throws java.sql.SQLExceptionjava.sql.SQLExceptionpublic void resetConnection()
protected void prepareConnection(java.sql.Connection con)
throws java.sql.SQLExceptionデフォルトの実装では、必要に応じて自動コミットフラグが適用されます。サブクラスでオーバーライドできます。
con - 準備する接続 java.sql.SQLExceptionsetAutoCommit(boolean)protected java.sql.Connection getCloseSuppressingConnectionProxy(java.sql.Connection target)
target - ラップする元の接続