ApplicationPoolImpl
を拡張し、必要なメソッドをオーバーライドして、アプリケーション・モジュール・プールの独自のカスタム実装を作成できます。たとえば、同時に4つ以上のインスタンスがプールから取り出されないようにするクラスCustomPool
を定義できます。この場合、checkout
メソッドの定義はオーバーライドされ、4つ以上のインスタンスが取り出されないようチェックされます。4つ以上取り出された場合、例外がスローされます。
1 /** 2 ** This is a simple application pool class that allows 3 ** checkout of only three instances. 4 **/ 5 class CustomPool extends ApplicationPoolImpl 6 { 7 public CustomPool() 8 { 9 } 10 /** 11 * Ensures that only three instances are 12 * checked out of the pool. Otherwise, a 13 * RuntimeException is thrown. 14 * 15 * @return oracle.jbo.ApplicationModule 16 */ 17 public synchronized ApplicationModule createNewInstance() 18 { 19 // if the instance count > 3 throw an exception 20 int nCount = getInstanceCount(); 21 if(nCount > 3) 22 { 23 throw new RuntimeException("You have exceeded the number of instances for this pool"); 24 } 25 return super.checkout(); 26 } 27 }
5行: ApplicationPoolImpl
を拡張するCustomPool
クラスを作成します。
17から23行: checkout
メソッドをオーバーライドし、4つ以上のインスタンスが取り出されているかどうかテストします。4つ以上取り出されている場合、RuntimeException
がスローされます。
CustomPool
クラスをプログラムで使用できます。
1 public class PoolTester extends Object {9から11行: 環境設定を定義します。これは、(ここで示されているとおり)直接またはプロパティ・ファイルから実行できます。この例では、ハッシュテーブルには、
2 /**
3 * Constructor
4 */
5 public PoolTester() {
6 }
7 public void doTest() throws Exception
8 {
9 Hashtable info = new Hashtable();
10 info.put(JboContext.INITIAL_CONTEXT_FACTORY, JboContext.JBO_CONTEXT_FACTORY);
11 info.put(JboContext.DEPLOY_PLATFORM, "LOCAL");
12 // create a pool with a custom application pool class
13 PoolMgr.getInstance().createPool("CustomTestAMPool",
"oracle.jbo.common.ampool.CustomPool" , "package2.Package2Module" ,
"jdbc:oracle:thin:scott/tiger@localhost:1521:orcl", info);
14 pool = PoolMgr.getInstance().getPool("CustomTestAMPool");
15 try
16 {
17 instance = pool.checkout();
18 instance = pool.checkout();
19 instance = pool.checkout();
20 instance = pool.checkout();
21 instance = pool.checkout();
22 }
23 catch(Exception ex)
24 {
25 ex.printStackTrace();
26 }
27 }
LOCAL
モードで接続するための環境を設定するプロパティが含まれます。
12から14行: CustomPool
を使用し、プールCustomTestAMPool
を作成します。PoolMgr
はシングルトン・オブジェクトであるため、PoolMgr.getInstance
を使用して取得します。
createPool
を使用し、プールを作成します。この場合、createPool
では、プール名、アプリケーション・モジュール・プールのデフォルト実装をオーバーライドするクラスの名前、アプリケーション・モジュールを含むパッケージの名前、データベースの接続文字列、ハッシュテーブル名が必要なことに注意してください。
15から25行: try
-catch
ループを設定し、インスタンスのチェックを開始し、例外を捕捉します。20行のpool.checkout()
で、例外がスローされます。
アプリケーション・モジュールのプール
アプリケーション・モジュール・プールについて
プールのためのクラスについて
JSPプロジェクトのBC4J構成プロパティについて