TTConnectionPoolリファレンス
TTConnectionPoolクラスは、マルチスレッド・アプリケーションによって、接続のプールの管理に使用されます。
TTConnectionPoolの使用方法も参照してください。
パブリック・メソッド
この項では、TTConnectionPoolパブリック・メソッドの概要を説明します。
パブリック・メソッドの概要
| メソッド | 説明 |
|---|---|
|
|
|
|
すべての |
|
|
接続プール内のすべての接続をTimesTenから切断します。 |
|
|
別のスレッドへの再割当てができるよう、接続をプールに返します。 |
|
|
スレッドの接続プールからアイドル状態の接続を確認します。 |
|
|
|
AddConnectionToPool()
int AddConnectionToPool(TTConnection* connP)このメソッドは、TTConnectionオブジェクト(おそらくはTTConnectionから導出されたクラスのオブジェクト)を接続プールに追加するために使用します。エラーがない場合は、-1が返されます。freeConnection()も参照してください。
ConnectAll()
void ConnectAll(const char* connStr)
void ConnectAll(const char* connStr, const char* username, const char* password)AddConnectionToPool()によってアプリケーションのすべてのTTConnectionオブジェクトが接続プールに追加された後、ConnectAll()メソッドを使用して、すべてのTTConnectionオブジェクトを同時にTimesTenに接続できます。connStrパラメータで指定された接続文字列を使用して接続が作成されます。ユーザーとパスワードを、接続文字列の一部または別のパラメータとして指定します。次のメソッドDisconnectAll()も参照してください。
エラーが発生するとTTStatusオブジェクトが例外としてスローされます。
データベースに接続する権限は、CREATE SESSION権限を使用して、直接またはPUBLICロールを介してユーザーに付与する必要があります。接続メソッドを参照してください。
DisconnectAll()
void DisconnectAll()接続プール内のすべての接続をTimesTenから切断します。前述のメソッドConnectAll()も参照してください。
アプリケーションでは、プロセス障害の分析とリカバリに関連するオーバーヘッドを回避するために、終了の前にDisconnectAll()をコールする必要があります。エラーが発生するとTTStatusオブジェクトが例外としてスローされます。
freeConnection()
void freeConnection(TTConnection* connP)別のスレッドへの再割当てができるよう、接続をプールに返します。アプリケーションでは、トランザクション中の接続を解放しないでください。TTConnection::Commit()またはRollback()は、TTConnectionオブジェクトがfreeConnection()に渡される直前にコールされる必要があります。AddConnectionToPool()も参照してください。
getConnection()
TTConnection* getConnection(int timeout_millis=0)接続プールからスレッドで使用するアイドル状態の接続があるかを確認します。アイドル状態のTTConnectionオブジェクトへのポインタが返されます。スレッドはその後、トランザクションを実行し、Commit()またはRollback()のいずれかでそれを終了してから、freeConnection()メソッドを使用して接続をプールに返します。
プール内にアイドル状態の接続がない場合は、freeConnection()のコールによって接続がプールに返されるまで、getConnection()をコールするスレッドがブロックされます。オプションのタイムアウトをミリ秒単位で指定できます。これが指定された場合、getConnection()は、最大でtimeout_millisミリ秒間、使用可能な接続を待機します。その時間内に使用可能な接続がなかった場合、getConnection()はコール元にNULLを返します。
getStats()
void getStats(int* nGets, int* nFrees, int* nWaits, int* nTimeouts,
int* maxInUse, int* nForcedCommits)TTConnectionPoolにステータス情報を問い合せます。次のデータが返されます。
-
nGets:getConnection()に対するコール数 -
nFrees:freeConnection()に対するコール数 -
nWaits: 接続が返されるまでgetConnection()に対するコールが待機する必要があった回数 -
nTimeouts: タイムアウトしたgetConnection()に対するコール数 -
maxInUse: 同時に使用された接続の最大数の最高水準 -
nForcedCommits:freeConnection()によって接続がプールにチェックインされる前に、その接続に対してCommit()をコールする必要があった回数このカウンタが0(ゼロ)以外の場合は、ユーザー・アプリケーションが接続をプールに返す前に
TTConnection::Commit()またはRollback()をコールしていません。