目次 | |

18. エンタプライズJavaBeansAPI参照

エンタプライズJavaBeansAPIを構成するインタフェース及びクラスを次に示す。

パッケージjavax.ejb

インタフェース:

クラス: パッケージjavax.ejb.deployment

クラス:

インタフェースEJBContext

    public interface javax.ejb.EJBContext
    {
        public abstract Identity
            getCallerIdentity();
        public abstract EJBHome
            getEJBHome();
        public abstract Properties
            getEnvironment();
        public abstract boolean
            getRollbackOnly();
        public abstract UserTransaction
            getUserTrasaction();
        public abstract boolean
            isCallerInRole(Identity role);
        public abstract void setRollbackOnly();
    }

インタフェースEJBContextは,エンタプライズBeanインスタンスのコンテナ提供実行時文脈にアクセスするインスタンスを提供する。

このインタフェースは,インタフェースSessionContext及びインタフェースEntityContextによって拡張され,エンタプライズBean型に固有の付加的なメソッドを提供する。

メソッド

インタフェースEJBHome

    public interface javax.ejb.EJBHome
        extends java.rmi.Remote
    {
        public abstract EJBMetaData
            getEJBMetaDeta();
        public abstract void
            remove(Handle handle);
        public abstract void
            remove(Object primaryKey);
    }

インタフェースEJBHomeは,すべてのエンタプライズBeanのホームインタフェースによって拡張される。エンタプライズBeanのホームインタフェースは,クライアントがEJBオブジェクトを生成,発見,除去できるメソッドを定義する。

エンタプライズBeanはそれぞれホームインタフェースをもつ。ホームインタフェースは,インタフェースjavax.ejb.EJBHomeを拡張し,生成メソッド及びファインダメソッド固有のエンタプライズBean型を定義する(セションBeansはファインダメソッドをもたない。)。

ホームインタフェースは,エンタプライズBean提供者によって定義され,エンタプライズBeanコンテナによって実装される。

メソッド

インタフェースEJBMetaData

    public interface javax.ejb.EJBMetaData
    {
        public abstract EJBHome getEJBHome();
        public abstract Class
            getHomeInterfaceClass();
        public abstract Class
            getPrimaryKeyClass();
        public abstract Class
            getRemoteInterfaceClass();
        public abstract boolean isSession();
    }

インタフェースEJBMetaDataは,クライアントにエンタプライズBeanのメタデータ情報を獲得させる。

メタデータは,配置されたエンタプライズBeansを使用するアプリケーションの構築のために使用される開発ツール及びクライアントがスクリプティング言語を使用してエンタプライズBeanをアクセスすることを想定している。

EJBMetaDataは遠隔インタフェースではないことに注意すること。このインタフェースを実装するクラス(このクラスは通常はコンテナツールによって生成される)は,直列化可能でなければならず,有効なRMI/IDL値の型でなければならない。

メソッド

インタフェースEJBObject

    public interface javax.ejb.EJBObject
        extends java.rmi.Remote
    {
        public abstract EJBHome getEJBHome();
        public abstract Handle getHandle();
        public abstract Object getPrimaryKey();
        public abstract boolean
            isIdentical(EJBObject obj);
        public abstract void remove();
    }

インタフェースEJBObjectは,すべてのエンタプライズBeanの遠隔インタフェースによって拡張される。エンタプライズBeanの遠隔インタフェースは,EJBオブジェクトのクライアントのビューを提供する。エンタプライズBeanの遠隔インタフェースは,クライアントが呼び出せる業務メソッドを定義する。

エンタプライズBeanはそれぞれ遠隔インタフェースをもつ。遠隔インタフェースは,インタフェースjavax.ejb.EJBObjectを拡張し,エンタプライズBean固有の業務メソッドを定義しなければならない。

エンタプライズBeanの遠隔インタフェースは,エンタプライズBean提供者によって定義され,エンタプライズBeanコンテナによって実装される。

メソッド

インタフェースEnterpriseBean

    public interface javax.ejb.EnterpriseBean
        extends java.io.Serializable
    {
    }

インタフェースEnterpriseBeanは,あらゆるエンタプライズBeanクラスによって実装されなければならない。インタフェースEnterpriseBeanは,インタフェースSessionBean及びインタフェースEntityBeanに共通のスーパインタフェースとする。

インタフェースEntityBean

    public interface javax.ejb.EntityBean
        extends javax.ejb.EnterpriseBean
    {
        public abstract void ejbActivate();
        public abstract void ejbLoad();
        public abstract void ejbPassivate();
        public abstract void ejbRemove();
        public abstract void ejbStore();
        public abstract void
            setEntityContent(EntityContext ctx);
        public abstract void
            unsetEntityContext();
    }

インタフェースEntityBeanは,すべての実体エンタプライズBeanクラスによって実装される。コンテナはメソッドEntityBean()を使用して,エンタプライズBeanインスタンスにインスタンスのライフサイクルイベントを知らせる。

実体エンタプライズBeanに対するサポートは,EJB1.0に従ったコンテナには任意となることに注意すること。実体に対するサポートは,EJB2.0に従ったコンテナでは必須となるだろう。

メソッド

インタフェースEntityContext

    public interface javax.ejb.EntityContext
        extends javax.ejb.EJBContext
    {
        public abstract EJBObject getEJBObject();
        public abstract Object getPrimaryKey();
    }

インタフェースEntityContextは,実体エンタプライズBeanインスタンスのコンテナ提供実行時文脈へアクセスするインスタンスを提供する。インスタンス生成後,コンテナはインタフェースEntityContextを実体エンタプライズBeanインスタンスに渡す。インタフェースEntityContextは,インスタンスの存続時間中,インスタンスと関連付けられたままとする。インタフェースEntityContextを使用してインスタンスが獲得する情報(メソッドgetPrimaryKey()の結果など)は,コンテナがインスタンスのライフサイクル中に異なるEJBオブジェクトにインスタンスを割り当てるため,変更される可能性がある点に注意すること。

メソッド

インタフェースHandle

    public interface javax.ejb.Handle
    {
        public abstract EJBObject getEJBObject();
    }

インタフェースHandleは,すべてのEJBオブジェクトハンドルによって実装される。ハンドルはEJBオブジェクトへのネットワーク参照の抽象化である。ハンドルはEJBオブジェクトへの“ローバスト”永続的参照として使用されることを想定している。

ハンドル(通常はコンテナが提供する)に対応する実装クラスは,クライアントがハンドルオブジェクトを直列化できるjavax.io.Serializableでなければならない。

メソッド

インタフェースSessionBean

    public interface javax.ejb.SessionBean
        extends javax.ejb.EnterpriseBean
    {
        public abstract void ejbActivate();
        public abstract void ejbPassivate();
        public abstract void ejbRemove();
        public abstract void
            setSessionContext(SessionContext ctx);
    }

インタフェースSessionBeanは,あらゆるセションエンタプライズBeanクラスによって実装される。コンテナはメソッドSessionBean()を使用して,エンタプライズBeanインスタンスにインスタンスのライフサイクルイベントを知らせる。

メソッド

インタフェースSessionContext

    public interface javax.ejb.SessionContext
        extends javax.ejb.EJBContext
    {
        public abstract EJBContext getEJBObject();<
    }

インタフェースSessionContextは,実行時セション文脈へのアクセスを提供する。コンテナは,セションエンタプライズBeanインスタンスに対応する実行時セション文脈を提供する。コンテナは,インスタンス生成後,インタフェースSessionContextをインスタンスに渡す。セション文脈は,インスタンスの存続時間の間,インスタンスと関連付けられたままである。

メソッド

インタフェースSessionSynchronization

    public interface javax.ejb.SessionSynchronization
    {
        public abstract void afterBegin();
        public abstract void afterCompletion(boolean committed);
        public abstract void beforeCompletion();
    }

インタフェースSessionSynchronizationによって,トランザクション境界のコンテナがセションBeanインスタンスを通知することが可能になる。

セションBeanクラスは,このインタフェースを実装しなくてもよい。セションBeanクラスは,その状態をトランザクションで同期化したい場合にだけ,このインタフェースを実装しなければならない。

メソッド

クラスCreateException

    public class javax.ejb.CreateException
        extends java.lang.Exception
    {
        public CreateException();
        public CreateException(String message);
    }

例外CreateExceptionは,エンタプライズBeanの遠隔インタフェースで定義するすべてのメソッドcreate()のthrows節に含まれなければならない。

例外は,障害を報告する標準アプリケーションレベルの例外として使用され,実体EJBオブジェクトを生成する。

コンストラクタ

クラスDuplicateKeyException

    public class javax.ejb.DuplicateKeyException
        extends javax.ejb.CreateException
    {
        public DuplicateKeyException();
        public DuplicateKeyException(String message);
    }

同じキーを有するオブジェクトがすでに存在するため,実体EJBオブジェクトを生成できない場合,例外DuplicateKeyExceptionが投げられる。エンタプライズBeanのホームインタフェースで定義される生成メソッドがこの例外を投げる。

コンストラクタ

クラスFinderException

    public class javax.ejb.FinderException
        extends java.lang.Exception
    {
        public FinderException();
        public FinderException(String message);
    }

例外FinderExceptionは,実体BeanのホームインタフェースのすべてのメソッドfindMETHOD()のthrows節に含まれなければならない。

例外は障害を報告する標準アプリケーションレベルの例外として使用され,要求されたEJBオブジェクトを一つ以上発見する。

コンストラクタ

クラスObjectNotFoundException

    public class javax.ejb.ObjectNotFoundException
        extends javax.ejb.FinderException
    {
        public ObjectNotFoundException();
        public ObjectNotFoundException(String message);
    }

例外ObjectNotFoundExceptionはfinderメソッドによって投げられ,指定されたEJBオブジェクトが存在しないことを示す。

単一のEJBオブジェクトを返すことを宣言されるファインダメソッドだけがこの例外を使用する。この例外は,EJBオブジェクトの集まりを返すファインダメソッドが投げてはならない。(ファインダメソッドは,代わりにnullを返さなければならない。)

コンストラクタ

クラスRemoveException

    public class javax.ejb.RemoveException
        extends java.lang.Exception
    {
        public RemoveException();
        public RemoveException(String message);
    }

例外RemoveExceptionは,エンタプライズBean又はコンテナがEJBオブジェクトを除去できない場合に,EJBオブジェクトを除去しようとするときに投げられる。

コンストラクタ

クラスAccessControlEntry

    public class javax.ejb.deployment.AccessControlEntry
        extends java.lang.Object
        implements java.io.Serializable
    {
        public AccessControlEntry();
        public AccessControlEntry(Method method);
        public
            AccessControlEntry(Method method,
                               Identity identities[]);
        public Identity[] getAllowedIdentities();
        public Identity
            getAllowedIdentities(int index);
        public Method getMethod();
        public void
            setAllowedIdentities(Identity values[]);
        public void
            setAllowedIdentities(int index,
                                 Identity value);
        public void setMethod(Method value);
    }

クラスAccessControlEntryは,セキュリティ識別性のリストとエンタプライズBeanのメソッドとを関連付ける。 エンタプライズBeanのメソッドを呼び出すために,指定された識別性を使用できる。

AccessControlEntryと関連付けられたMethodは, エンタプライズBeanクラスのMethodでなければならず, メソッドは, 業務メソッド,メソッドejbCreate(),メソッドfinder()又はメソッドejbDestroy() のいずれかでなければならない。

AccessControlEntryで使用されるMethodがnullの場合,AccessControlEntryは,全体Beanと関連付けられると考える。 BeanレベルのAccessControlEntryは,メソッドレベルのAccessControlEntryをもたないメソッドに対して, デフォルト値を提供する。

コンストラクタ

メソッド

クラスControlDescriptor

    public class javax.ejb.deployment.ControlDescriptor
        extends java.lang.Object
        implements java.io.Serializable
    {
        public final static int CLIENT_IDENTITY;
        public final static int SPECIFIED_IDENTITY;
        public final static int SYSTEM_IDENTITY;
        public final static int TRANSACTION_READ_COMMITTED;
        public final static int TRANSACTION_READ_UNCOMMITTED;
        public final static int TRANSACTION_REPEATABLE_READ;
        public final static int TRANSACTION_SERIALIZABLE;
        public final static int TX_BEAN_MANAGED;
        public final static int TX_MANDATORY;
        public final static int TX_NOT_SUPPORTED;
        public final static int TX_REQUIRED;
        public final static int TX_REQUIRES_NEW;
        public final static int TX_SUPPORTS;
        public ControlDescriptor();
        public ControlDescriptor(Method method);
        public int getIsolationLevel();
        public Method getMethod();
        public Identity getRunAsIdentity();
        public int getRunAsMode();
        public int getTransactionAttribute();
        public void setIsolationLevel(int value);
        public void setMethod(Method value);
        public void setRunAsIdentity(Identity value);
        public void setRunAsMode(int value);
        public void setTransactionAttribute(int value);
    }

ControlDescriptorは,エンタプライズBeanメソッドの実行時における実行と関連付けられるトランザクション及び セキュリティ属性を定義する。

ControlDescriptorで使用されるMethodがnullの場合,ControlDescriptorは,全体Beanと関連付けられると考える。 BeanレベルのControlDescriptorは,メソッドレベルのControlDescriptorをもたないメソッドに対して, デフォルト値を提供する。

クラスControlDescriptorのメソッドは, JavaBean特性設計パタンに従う。

変数

コンストラクタ

メソッド

クラスDeploymentDescriptor

    public class javax.ejb.deployment.DeploymentDescriptor
        extends java.lang.Object
        implements java.io.Serializable
    {
        protected int versionNumber;
        public DeploymentDescriptor();
        public AccessControlEntry[] 
            getAccessControlEntries();
        public AccessControlEntry 
            getAccessControlEntries(int index);
        public Name getBeanHomeName();
        public ControlDescriptor[] 
            getControlDescriptors();
        public ControlDescriptor 
            getControlDescriptors(int index);
        public String 
            getEnterpriseBeanClassName();
        public Properties 
            getEnvironmentProperties();
        public String getHomeInterfaceClassName();
        public boolean getReentrant();
        public String getRemoteInterfaceClassName
        public boolean isReentrant();
        public void 
            setAccessControlEntries(AccessControlEntry values[]);
        public void 
            setAccessControlEntries(int index, 
                                    AccessControlEntry value);
        public void setBeanHomeName(Name value);
        public void 
            setControlDescriptors(ControlDescriptor value[]);
        public void 
            setControlDescriptors(int index, 
                                  ControlDescriptor value);
        public void setEnterpriseBeanClassName(String value);
        public void setEnvironmentProperties(Properties value);
        public void setHomeInterfaceClassName(String value);
        public void setReentrant(boolean value);
        public void setRemoteInterfaceClassName(String value);
    }

クラスDeproymentDescriptorは,配置記述子クラスSessionDescriptor及びEntityDescriptorに共通の基底クラスとする。

クラスのメソッドは, JavaBeans特性設計パタンに適合する。

EntityDescriptor及びSessionDescriptorも参照すること。

変数

コンストラクタ

メソッド

クラスEntityDescriptor

    public class javax.ejb.deployment.EntityDescriptor
        extends javax.ejb.deployment.DeploymentDescriptor
    {
        public EntityDescriptor();
        public Field[] getContainerManagedFields();
        public Field getContainerManagedFields(int index);
        public String getPrimaryKeyClassName();
        public void setContainerManagedFields(Field values[]);
        public void 
            setContainerManagedFields(int index, Field value);
        public void setPrimaryKeyClassName(String value);
    }

クラスEntityDescriptorは,実体エンタプライズBeanに対する配置記述子を定義する。

クラスEntityDescriptorの直列化インスタンスは,ejb-jarファイル内に存在する実体エンタプライズBean の宣言配置属性を渡すための標準形式として使用する。

Bean提供者ツールは, 設定(set)関数を使用して,配置記述子のインスタンスを初期化する。その後,Bean提供者ツールは, ejb-jarファイルの中にインスタンスを直列化する。

獲得(get)間数は, 配置時にコンテナツールによって使用される。ツールは, ejb-jarファイルからインスタンスを非直列化し, 獲得関数を使用して,エンタプライズBeanに関する情報を獲得する。

エンタプライズJavaBeans体系は,実際の配置記述子クラスが,実行時にコンテナによって使用されるかどうかを規定しないこと に注意。そのため,コンテナは, 配置時に配置記述子から情報をインポートすることができ, コンテナ固有の形式で情報を記憶できる。しかし,エンタプライズJavaBeans規定によって規定されるとおりに, コンテナは, 実行時には宣言属性を強制することが必要となる。

エンタプライズBeanがコンテナにインストールされた後,配置属性の値を表示し変更するために, コンテナツールを使用できる。配置記述子の値の変更によって, 配置されたアプリケーションのセマンティクスが変わる場合もあるので,コンテナは, ある属性への変更を制限してもよい。

クラスEntityDescriptorのメソッドは,JavaBeans特性設計パタンに従う。

コンストラクタ

メソッド

クラスSessionDescriptor

    public class javax.ejb.deployment.SessionDescriptor
        extends javax.ejb.deployment.DeploymentDescriptor
    {
        public final static int STATEFUL_SESSION;
        public final static int STATELESS_SESSION;
        public SessionDescriptor();
        public int getSessionTimeout();
        public int getStateManagementType();
        public void setSessionTimeout(int value);
        public void setStateManagementType(int value);
    }

クラスSessionDescriptorは,セションエンタプライズBeanに対する配置記述子を定義する。

クラスSessionDescriptorの直列化インスタンスは,ejb-jarファイルにおけるセションエンタプライズBean の宣言配置属性を渡すための標準形式として使用される。

Bean提供者ツールは, 設定(set)関数を使用して,配置記述子のインスタンスを初期化する。 その後,Bean提供者ツールは, ejb-jarファイルにインスタンスを直列化する。

獲得(get)関数は, 配置時にコンテナが使用する。ツールは, ejb-jarファイルからインスタンスを非直列化し, 獲得(get)関数を使用して,エンタプライズBeanに関する情報を獲得する。

エンタプライズJavaBeans体系は,実際の配置記述子クラスが,実行時にコンテナによって使用されるかどうかを 規定しないことに注意と。そのために,コンテナは, 配置時に配置記述子から情報をインポートすることでき, コンテナ固有の形式で情報を記憶することができる。しかし,エンタプライズJavaBeans規定によって規定されるとおりに, コンテナは, 実行時に宣言属性を強制することが必要となる。

エンタプライズBeanがコンテナにインストールされた後,配置属性の値を閲覧し変更するために,コンテナツールを使用できる。 配置記述子の値を変更すると,配置されたアプリケーションのセマンティクスが変わる場合があるので,コンテナは, ある属性への変更を制限してもよい。

クラスSessionDescriptorのメソッドは,JavaBeans特性設計パタンに従う。

変数

コンストラクタ

メソッド


目次 | |