public class SingleConnectionDataSource extends DriverManagerDataSource implements SmartDataSource, DisposableBean
SmartDataSource
の実装。明らかに、これはマルチスレッド対応ではありません。 シャットダウン時に、誰かが close()
メソッドを介して基礎となる接続を閉じる必要があることに注意してください。SmartDataSource に対応している(たとえば DataSourceUtils.releaseConnection
を使用している)場合、クライアントコードは接続ハンドルで close を呼び出しません。
永続化ツールを使用する場合など、クライアントコードがプールされた接続を想定して close()
を呼び出す場合は、"suppressClose" を "true" に設定します。これにより、物理的な接続ではなく、クローズ抑制プロキシが返されます。
これは主にテスト用です。例: DataSource で動作することを期待するコードについて、アプリケーションサーバーの外で簡単にテストできます。DriverManagerDataSource
とは対照的に、常に同じ接続を再利用し、物理接続の過剰な作成を回避します。
getConnection()
, Connection.close()
SE, DataSourceUtils.releaseConnection(java.sql.Connection, javax.sql.DataSource)
logger
コンストラクターと説明 |
---|
SingleConnectionDataSource() Bean スタイルの構成のコンストラクター。 |
SingleConnectionDataSource(ConnectionSE target, boolean suppressClose) 指定された接続で新しい SingleConnectionDataSource を作成します。 |
SingleConnectionDataSource(StringSE url, boolean suppressClose) 指定された標準 DriverManager パラメーターで新しい SingleConnectionDataSource を作成します。 |
SingleConnectionDataSource(StringSE url, StringSE username, StringSE password, boolean suppressClose) 指定された標準 DriverManager パラメーターで新しい SingleConnectionDataSource を作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
void | destroy() 基になる接続を閉じます。 |
protected BooleanSE | getAutoCommitValue() 返された接続の "autoCommit" 設定を上書きする必要があるかどうかを返します。 |
protected ConnectionSE | getCloseSuppressingConnectionProxy(ConnectionSE target) すべてのメソッド呼び出しを委譲するプロキシを使用して、指定された接続をラップしますが、クローズ呼び出しを抑制します。 |
ConnectionSE | getConnection() この実装は、この DataSource のデフォルトのユーザー名とパスワードを使用して getConnectionFromDriver に委譲します。 |
ConnectionSE | getConnection(StringSE username, StringSE password) カスタムのユーザー名とパスワードを指定しても、単一の接続では意味がありません。 |
void | initConnection() DriverManager を介して基になる接続を初期化します。 |
protected boolean | isSuppressClose() 返された接続がクローズ抑制プロキシか物理接続かを返します。 |
protected void | prepareConnection(ConnectionSE con) 公開する前に、所定の接続を準備します。 |
void | resetConnection() 基礎となる共有接続をリセットして、次のアクセスで再初期化します。 |
void | setAutoCommit(boolean autoCommit) 返された接続の "autoCommit" 設定を上書きするかどうかを設定します。 |
void | setSuppressClose(boolean suppressClose) 返された接続をクローズ抑制プロキシにするか物理接続にするかを設定します。 |
boolean | shouldClose(ConnectionSE con) これは単一の接続です。「プール」に戻るときに接続を閉じないでください。 |
getConnectionFromDriver, getConnectionFromDriverManager, setDriverClassName
getCatalog, getConnectionFromDriver, getConnectionProperties, getPassword, getSchema, getUrl, getUsername, setCatalog, setConnectionProperties, setPassword, setSchema, setUrl, setUsername
getLoginTimeout, getLogWriter, getParentLogger, isWrapperFor, setLoginTimeout, setLogWriter, unwrap
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
getLoginTimeoutSE, getLogWriterSE, getParentLoggerSE, setLoginTimeoutSE, setLogWriterSE
isWrapperForSE, unwrapSE
public SingleConnectionDataSource()
public SingleConnectionDataSource(StringSE url, StringSE username, StringSE password, boolean suppressClose)
url
- DriverManager へのアクセスに使用する JDBC URLusername
- DriverManager へのアクセスに使用する JDBC ユーザー名 password
- DriverManager へのアクセスに使用する JDBC パスワード suppressClose
- 返された接続がクローズ抑制プロキシまたは物理接続である場合 DriverManager.getConnection(String, String, String)
SEpublic SingleConnectionDataSource(StringSE url, boolean suppressClose)
url
- DriverManager へのアクセスに使用する JDBC URLsuppressClose
- 返された接続がクローズ抑制プロキシまたは物理接続である場合 DriverManager.getConnection(String, String, String)
SEpublic SingleConnectionDataSource(ConnectionSE 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 BooleanSE getAutoCommitValue()
null
public ConnectionSE getConnection() throws SQLExceptionSE
AbstractDriverBasedDataSource
getConnectionFromDriver
に委譲します。DataSourceSE
の getConnectionSE
AbstractDriverBasedDataSource
の getConnection
SQLExceptionSE
AbstractDriverBasedDataSource.getConnectionFromDriver(String, String)
, AbstractDriverBasedDataSource.setUsername(java.lang.String)
, AbstractDriverBasedDataSource.setPassword(java.lang.String)
public ConnectionSE getConnection(StringSE username, StringSE password) throws SQLExceptionSE
DataSourceSE
の getConnectionSE
AbstractDriverBasedDataSource
の getConnection
SQLExceptionSE
AbstractDriverBasedDataSource.getConnectionFromDriver(String, String)
public boolean shouldClose(ConnectionSE con)
SmartDataSource
の shouldClose
con
- 確認する接続 Connection.close()
SEpublic void destroy()
この Bean は DisposableBean を実装しているため、Bean ファクトリは、キャッシュされたシングルトンの破棄時にこれを自動的に呼び出します。
DisposableBean
の destroy
public void initConnection() throws SQLExceptionSE
public void resetConnection()
protected void prepareConnection(ConnectionSE con) throws SQLExceptionSE
デフォルトの実装では、必要に応じて自動コミットフラグが適用されます。サブクラスでオーバーライドできます。
con
- 準備する接続 SQLExceptionSE
setAutoCommit(boolean)
protected ConnectionSE getCloseSuppressingConnectionProxy(ConnectionSE target)
target
- ラップする元の接続