29.3.2. コンテナープラグインのフレームワーク

JBoss EJB コンテナーはコンテナー動作の実装をさまざまな側面から変更できるようにするフレームワークパターンを使用しています。コンテナー自体は各種の動作コンポーネント同士を接続する以外は特に重要な動作は行いません。コンテナー設定を変更することで新しい実装をプラグインできるため、動作コンポーネントの実装はプラグインとして参照されます。一般的に変更される可能性のあるプラグイン動作の例としては、永続管理、オブジェクトのプール、オブジェクトのキャッシュ、コンテナー呼び出し、インターセプターなどがあります。org.jboss.ejb.Container クラスには 4 つのサブクラスがあり、それぞれ特定の bean タイプを実装しています。
  • org.jboss.ejb.EntityContainer: javax.ejb.EntityBean タイプを処理します。
  • org.jboss.ejb.StatelessSessionContainer: ステートレス javax.ejb.SessionBean タイプを処理します。
  • org.jboss.ejb.StatefulSessionContainer: ステートフル javax.ejb.SessionBean タイプを処理します。
  • org.jboss.ejb.MessageDrivenContainerjavax.ejb.MessageDrivenBean タイプを処理します。
EJB コンテナーは、コンテナーの動作の多くをコンテナープラグインとして知られるコンポーネントに委譲します。コンテナープラグインポイントを構成するインターフェースは以下のとおりです。
  • org.jboss.ejb.ContainerPlugin
  • org.jboss.ejb.ContainerInvoker
  • org.jboss.ejb.Interceptor
  • org.jboss.ejb.InstancePool
  • org.jboss.ejb.InstanceCache
  • org.jboss.ejb.EntityPersistanceManager
  • org.jboss.ejb.EntityPersistanceStore
  • org.jboss.ejb.StatefulSessionPersistenceManager
コンテナーの主な役割は、コンテナーのプラグイン群を管理することです。つまり、プラグインがその機能を実装するために必要とするすべての情報を必ず得られるようにします。

29.3.2.1. org.jboss.ejb.ContainerPlugin

ContainerPlugin インターフェースは全コンテナープラグインインターフェースの親インターフェースになります。これによりコールバックができるようになり、コンテナーが各プラグインに対して、プラグインが代わりに作業を行っているコンテナーへのポインターを提供できるようになります。以下に ContainerPlugin インターフェースを示します。

例29.4 org.jboss.ejb.ContainerPlugin インターフェース

public interface ContainerPlugin
    extends Service, AllowedOperationsFlags
{
    /** co
     * This callback is set by the container so that the plugin
     * may access its container
     *
     * @param con the container which owns the plugin
     */
    public void setContainer(Container con);
}