アプリケーション・モジュール・コードにおけるプールの実装

アプリケーション・モジュール・プールを使用可能にするために行う必要のあるタスクの1つは、アプリケーション・モジュールへの接続に必要な環境情報の設定です。必要な情報は、アプリケーション・モジュールの存在するプラットフォームに依存します。

ステートフル・アプリケーションの実装例

PoolTesterクラスによって、LOCALモードでのアプリケーション・モジュール・プールのサンプル実装が提供され、アプリケーション・モジュール・プールを使用できます。この例では、アプリケーション・モジュール・プールのデフォルト実装を使用します。


 1 public class PoolTester extends Object {
2 /**
3 * Constructor
4 */
5 public PoolTester() {
6 }
7 public void doTest() throws Exception
8 {
9 Hashtable env = new Hashtable(10);

10 env.put(JboContext.INITIAL_CONTEXT_FACTORY, JboContext.JBO_CONTEXT_FACTORY);
11 env.put(JboContext.DEPLOY_PLATFORM, JboContext.PLATFORM_LOCAL);
12 PoolMgr.getInstance().createPool("TestAMPool", "Package1.MyAppMod",
"jdbc:oracle:thin:scott/tiger@localhost:1521:orcl", env);
13 PoolMgr.getInstance().createPool("SecondAMPool", "Package2.MyAppMod",
"jdbc:oracle:thin:scott/tiger@localhost:1521:orcl", env);
14 ApplicationPool pool = PoolMgr.getInstance().getPool("TestAMPool");
15 ApplicationModule instance = pool.checkout();
16 ApplicationModule instance2 = pool.checkout();
17 ApplicationModule instance3 = pool.checkout();
18 ApplicationPool pool2 = PoolMgr.getInstance().getPool("SecondAMPool");
19 ApplicationModule instance22 = pool2.checkout();
20 ApplicationModule instance23 = pool2.checkout();
21 String sessionId = pool2.checkinWithSessionState(instance22);
22 instance22 = pool2.checkout(sessionId);
23 PoolMgr.getInstance().removePool("TestAMPool");
24 }

9から11行: 環境設定を定義します。これは、(ここで示されているとおり)直接またはプロパティ・ファイルから実行できます。この例では、ハッシュテーブルには、LOCALモードで接続するための環境を設定するプロパティが含まれます。

12行: プールTestAMPoolを作成します。 PoolMgrはシングルトン・オブジェクトであるため、PoolMgr.getInstanceを使用して取得します。createPoolを使用し、プールを作成します。createPoolでは、プール名、アプリケーション・モジュールを含むパッケージの名前、データベースの接続文字列、ハッシュテーブルenvが必要なことに注意してください。createPoolメソッドはオーバーロードされます。代替バージョンには追加パラメータを設定でき、アプリケーション・モジュール・プールのデフォルト実装をオーバーライドして、独自の指定を行えます。

13行: 同じ環境変数を使用して別のパッケージのアプリケーション・モジュールに接続する2番目のプールSecondAMPoolを作成します。

14行: PoolMgr.getInstance().getPool("TestAMPool")がプールを操作するためのハンドルを取得します。

15から17行: 3つのインスタンスをチェックアウトします。 クラスApplicationPoolImplおよびPoolMgrには、プールの内容を横断するために使用できる他の関数も含まれます。ampoolパッケージには、プールの中身のダンプに使用できるPoolAdministrator Web Beanも含まれます。

18から20行: 第2のプールのハンドルを取得し、2つのインスタンスを取り出します。

21から22行: アプリケーション・モジュール・インスタンスをステートフルでチェックインし、セッションIDをローカルな文字列に格納します。アプリケーション・モジュールを、チェックインした状態と同じ状態でチェックアウトします。

23行: removePoolを使用し、アプリケーション・モジュール・プールを削除します。この関数では、現在、取り出され、使用されているインスタンスを含む、すべてのアプリケーション・モジュール・インスタンスに対し、remove()がコールされ、インスタンスがデータベースから切断されて、すべてのビュー・オブジェクトが削除されます。

ステートレス・アプリケーションの実装例

PoolTesterクラスによって、LOCALモードでのアプリケーション・モジュール・プールのサンプル実装が提供され、アプリケーション・モジュール・プールを使用できます。この例では、アプリケーション・モジュール・プールのデフォルト実装を使用します。


 1 public class PoolTester extends Object {
2 /**
3 * Constructor
4 */
5 public PoolTester() {
6 }
7 public void doTest() throws Exception
8 {
9 Hashtable env = new Hashtable(10);

10 env.put(JboContext.INITIAL_CONTEXT_FACTORY, JboContext.JBO_CONTEXT_FACTORY);
11 env.put(JboContext.DEPLOY_PLATFORM, JboContext.PLATFORM_LOCAL);
12 PoolMgr.getInstance().createPool("TestAMPool", "Package1.MyAppMod",
"jdbc:oracle:thin:scott/tiger@localhost:1521:orcl", env);
13 PoolMgr.getInstance().createPool("SecondAMPool", "Package2.MyAppMod",
"jdbc:oracle:thin:scott/tiger@localhost:1521:orcl", env);
14 ApplicationPool pool = PoolMgr.getInstance().getPool("TestAMPool");
15 ApplicationModule instance = pool.checkout();
16 ApplicationModule instance2 = pool.checkout();
17 ApplicationModule instance3 = pool.checkout();
18 ApplicationPool pool2 = PoolMgr.getInstance().getPool("SecondAMPool");
19 ApplicationModule instance22 = pool2.checkout();
20 ApplicationModule instance23 = pool2.checkout();
21 pool2.checkin(instance22);
22 PoolMgr.getInstance().removePool("TestAMPool");
23 }

9から11行: 環境設定を定義します。これは、(ここで示されているとおり)直接またはプロパティ・ファイルから実行できます。この例では、ハッシュテーブルには、LOCALモードで接続するための環境を設定するプロパティが含まれます。

12行: プールTestAMPoolを作成します。 PoolMgrはシングルトン・オブジェクトであるため、PoolMgr.getInstanceを使用して取得します。createPoolを使用し、プールを作成します。createPoolでは、プール名、アプリケーション・モジュールを含むパッケージの名前、データベースの接続文字列、ハッシュテーブルenvが必要なことに注意してください。createPoolメソッドはオーバーロードされます。代替バージョンには追加パラメータを設定でき、アプリケーション・モジュール・プールのデフォルト実装をオーバーライドして、独自の指定を行えます。

13行: 同じ環境変数を使用して別のパッケージのアプリケーション・モジュールに接続する2番目のプールSecondAMPoolを作成します。

14行: PoolMgr.getInstance().getPool("TestAMPool")がプールを操作するためのハンドルを取得します。

15から17行: 3つのインスタンスをチェックアウトします。 クラスApplicationPoolImplおよびPoolMgrには、プールの内容を横断するために使用できる他の関数も含まれます。ampoolパッケージには、プールの中身のダンプに使用できるPoolAdministrator Web Beanも含まれます。

18から21行: 第2のプールのハンドルを取得し、2つのインスタンスを取り出して、1つを戻します。

22行: removePoolを使用し、アプリケーション・モジュール・プールを削除します。この関数では、現在、取り出され、使用されているインスタンスを含む、すべてのアプリケーション・モジュール・インスタンスに対し、remove()がコールされ、インスタンスがデータベースから切断されて、すべてのビュー・オブジェクトが削除されます。


関連項目
アプリケーション・モジュールのプール
アプリケーション・モジュール・プールについて
プールのためのクラスについて
JSPプロジェクトのBC4J構成プロパティについて