オブジェクト・プールの使用
オブジェクト・プールを使用すると、アプリケーションは新しい Java オブジェクトを繰り返し作成する必要がなくなります。ほとんどのオブジェクトは、一度作成され、使用された後、再利用することができます。オブジェクト・プールは、再利用待機中のオブジェクトのプールをサポートします。
このタスクについて
オブジェクト・プールは、JDBC 接続または Java Message Service (JMS) 接続およびセッションのプールに使用するためのものではありません。 WebSphere Application Server は、これらのタイプのオブジェクトを処理するための特別のメカニズムを提供します。これらのオブジェクト・プールは、アプリケーション定義のオブジェクトまたは基本的な Developer Kit タイプのプールのためのものです。
オブジェクト・プールを使用するには、製品管理者が管理コンソールを使用して、オブジェクト・プール・マネージャー を定義する必要があります。
複数のオブジェクト・プール・マネージャーを 1 つのアプリケーション・サーバー・セル内に作成できます。
注: オブジェクト・プール・マネージャー・サービスは、EJB コンテナーまたは Web コンテナー内からのみサポートされます。
Java 2 Platform Enterprise Edition (J2EE) アプリケーション・クライアント・コンテナーから、構成済みオブジェクト・プール・マネージャーを検索および使用することはできません。
手順
タスクの結果
例
以下のコードは、アプリケーションがオブジェクト・プール・マネージャー・オブジェクトを検出する方法を示しています。
InitialContext ic = new InitialContext();
ObjectPoolManager opm = (ObjectPoolManager)ic.lookup("java:comp/env/pool");
アプリケーションは ObjectPoolManager を保有すると、使用するクラスのタイプに対して
オブジェクト・プールをキャッシュすることができます。以下に例を示します。
ObjectPool arrayListPool = null;
ObjectPool vectorPool = null;
try
{
arrayListPool = opm.getPool(ArrayList.class);
vectorPool = opm.getPool(Vector.class);
}
catch(InstantiationException e)
{
// problem creating pool
}
catch(IllegalAccessException e)
{
// problem creating pool
}
アプリケーションは、プールを保有した後、以下の例のようにプールを使用することができます。
ArrayList list = null;
try
{
list = (ArrayList)arrayListPool.getObject();
list.clear(); // just in case
for(int i = 0; i < 10; ++i)
{
list.add("" + i);
}
// do what ever we need with the ArrayList
}
finally
{
if(list != null) arrayListPool.returnObject(list);
}
この例は、オブジェクト・プーリングを使用する基本パターンです。アプリケーションがオブジェクトを戻さない場合、 唯一の悪影響として、オブジェクトを再利用できなくなります。