Commons

メニュー

情報

プロジェクトに関する情報

我々について

Jakartaプロジェクト

コンポーネント レポジトリ

Sandboxコンポーネント

日本語訳 (Translations)

オリジナル

The Pool Component

Poolは、オブジェクトプールAPIを3つの角度から提供します:

  1. クライアントあるいは実装を行う人が、容易に置き換え可能なプール実装を準備するのに使う、総括的なプール用インターフェース
  2. オブジェクトプールの部品の生成用のツールキット
  3. 汎用目的のプール実装

ダウンロードページで、入手可能なリリース版の情報をご覧下さい。


Features

org.apache.commons.pool パッケージは、扱いやすいプーリングのインターフェースと、新規プール実装を作成する際に使いやすと思われる基底クラスを、規定します。

ObjectPool

ObjectPool は、ありふれたシンプルなプーリング用のインターフェースを規定しています。

public interface ObjectPool {
    Object borrowObject();
    void returnObject(Object borrowed);
}

追随クラス(client class)によっては、このインターフェースだけ使って、Poolパッケージのその他クラスを使う必要がないものもあるでしょう。 このインターフェースが規定された追随クラスは、任意のObjectPool実装を交互に使う事が可能となります。

BaseObjectPool クラスは、ObjectPoolインターフェースを実装した基底抽象クラスです。 新規ObjectPool実装の為にBaseObjectPoolをextendする事が推奨(必須ではありません)されています。

KeyedObjectPool インターフェースは、異種のオブジェクトから構成されるプールのインターフェース(上と似ている)を規定しています:

public interface KeyedObjectPool {
    Object borrowObject(Object key);
    void returnObject(Object key, Object borrowed);
}

PoolableObjectFactory

Poolパッケージは、インスタンスがプールされる方法と、インスタンスが生成・消滅する方法を使い分ける事を可能としています。 PoolableObjectFactory インターフェースは、プールされたオブジェクトのライフサイクルを総括的に管理/サポートします:

public interface PoolableObjectFactory {
    Object makeObject();
    void activateObject(Object obj);
    void passivateObject(Object obj);
    boolean validateObject(Object obj);
    void destroyObject(Object obj);
}

ObjectPool実装は、任意のPoolableObjectFactoryを受け入れるようなコードで記述されるかもしれません。 プールされた様々なオブジェクトとは全く別のプールの仕方を選択する事を可能とします。

BasePoolableObjectFactory クラスは、PoolableObjectFactoryの実装を簡単にする為の基底抽象クラスです。

KeyedPoolableObjectFactory インターフェースは、KeyedObjectPoolと似たインターフェースを規定しています:

public interface KeyedPoolableObjectFactory {
    Object makeObject(Object key);
    void activateObject(Object key, Object obj);
    void passivateObject(Object key, Object obj);
    boolean validateObject(Object key, Object obj);
    void destroyObject(Object key, Object obj);
}

BaseKeyedPoolableObjectFactory クラスは、KeyedPoolableObjectFactoryの実装を簡単にする為の基底抽象クラスです。


org.apache.commons.pool.impl パッケージは、Pool実装をいくつか提供します。

StackObjectPool

StackObjectPool "アイドル状態"のインスタンスを、限定された数だけプールします。また、更なるプール要求を満たすための新規インスタンスを生成します。

StackKeyedObjectPool は、他の"Keyed"の名前がつくプール用インターフェースと同じ性質を持っています。


GenericObjectPool

GenericObjectPool クラスは、 アイドル状態/使用状態のインスタンスの数の制限を行ったり、プール内でアイドル状態のインスタンスを強制的にプール外に追いやったり、といった 様々な設定オプション機能を提供します。

GenericKeyedObjectPool は、他の"Keyed"の名前がつくプール用インターフェースと同じ性質を持っています。


SoftReferenceObjectPool

SoftReferenceObjectPool クラス内のプール・インスタンスは、必要とあらばどんどん増えていきますが、 ガーベージ・コレクタによって、アイドル状態のインスタンスをプールから強制的に消滅させる事も出来ます。




Tetsuya Kitahata
Translated into Japanese by Tetsuya Kitahata , powered by Terra-International, Inc.
Original English Page would be found from HERE     --    ApacheNews    ASF 繝励Ο繧ク繧ァ繧ッ繝井ク隕ァ
Terra-International, Inc. -- 繝繝ゥス・繧、繝ウ繧ソ繝シ繝翫す繝ァ繝翫Ν