Datasnap.DataBkr.RegisterPooled
Delphi
procedure RegisterPooled(const ClassID: string; Max, Timeout: Integer; Singleton: Boolean = False);
C++
extern DELPHI_PACKAGE void __fastcall RegisterPooled(const System::UnicodeString ClassID, int Max, int Timeout, bool Singleton = false);
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
procedure function |
public | Datasnap.DataBkr.pas Datasnap.DataBkr.hpp |
Datasnap.DataBkr | Datasnap.DataBkr |
説明
リモートデータモジュールを登録して,インスタンスがプールされるようにします。
Delphi アプリケーション中では,リモートデータモジュールのインスタンスをプールできるようにするには,リモートデータモジュールクラスの下位オブジェクトの UpdateRegistry メソッドから RegisterPooled を呼び出します。データモジュールのインスタンスがプールされると,サーバーはリモートデータモジュールのインスタンスのキャッシュを保持します。各クライアントリクエストは,そのキャッシュからの利用可能な最初のインスタンスによって処理されます。インスタンスは共有されるので,リモートデータモジュールは持続的な状態情報に依存することはできません。
ClassID はリモートデータモジュールのクラス ID です。この値は RegisterPooled を呼び出す UpdateRegistry メソッドにパラメータとして渡されます。
Max はプール内のインスタンスの最大数を示します。クライアントアプリケーションがこの最大数より多くのインスタンスを要求した場合,アプリケーションサーバーは「Server too busy」例外を生成します。
Timeout は,オブジェクトプールでリモートデータモジュールのインスタンスがアイドル状態を維持できる時間を分単位で示します。Timeout の分数より長い間クライアントリクエストを受け取らない場合,インスタンスは自動的に解放されます。サーバーは 6 分ごとにチェックを行うので,オブジェクトは最大で Timeout の値より 6 分長くアイドル状態でいることがあります。Timeout を 0 に設定すると,タイムアウト期間なしになります。つまり,未使用のオブジェクトは,アプリケーションサーバーがシャットダウンするまで解放されません。
Singleton は,すべてのクライアント呼び出しが同一のリモートデータモジュールのインスタンスに行くことを示します。存在するのは,利用可能なインスタンスのプールではなく,単一のインスタンスだけです。リモートデータモジュールが自由にスレッド化できる場合にのみ,Singleton を true に設定します。
メモ: Singleton が true の場合,タイムアウト期間のないインスタンスが 1 つあるだけなので,Max と Timeout の値は無視されます。