プロパティの操作

このセクションには、『JRun によるアプリケーションの開発』で扱われていない EJB プロパティの操作方法に関する情報が含まれています。

コンテナのプロパティ

EJB エンジンによって作成されたすべてのコンテナには独自のプロパティ リストがあります。このプロパティ リストは、既定では、サーバのプロパティ リストに設定されます。JAR のトップレベルの default.properties ファイルは、このプロパティ リストにロードされ、以前にロードされたサーバ プロパティに上書きされます。

公開されたすべての Bean は、すべてのシステム プロパティ、ejipt.properties、コマンド ライン プロパティ、および local.properties への読み取り専用のアクセス権限を持っています。下位レベルのプロパティにアクセスすると、上位レベルでは常にプロパティが上書きされます。

Bean プロパティ

このセクションには、『JRun によるアプリケーションの開発』で扱われていない Bean プロパティに関する情報が含まれています。

命名 Bean

命名 Bean またはそれらのインターフェイスには必要条件も制限事項もありせん。命名規則では一切仮説を立てられません。したがって、Bean 開発者は、Bean のホーム インターフェイス、Bean のリモート インターフェイス、および Bean の実装の名前を Bean のプロパティ ファイル内で指定することが必要です。 たとえば、次のエントリ
(推奨規則) を含めることができます。

ejb.homeInterfaceClassName=ejbeans.CustomerHome
ejb.remoteInterfaceClassName=ejbeans.Customer
ejb.enterpriseBeanClassName=ejbeans.CustomerBean
#次のエントリを含めることもできます。ただし、推奨はしません。
#ejb.homeInterfaceClassName=ejbeans.Abc
#ejb.remoteInterfaceClassName=ejbeans.Xyz
#ejb.enterpriseBeanClassName=ejbeans.SomeBean

エンティティ Bean のプライマリ キー クラス タイプを指定する必要があります。このプライマリ キー クラス タイプは、Deploy ツールがクラス 実装を作成する際に使用したり、コンテナがコンテナ管理パーシスタンスを使用する際に使用します。

#プライマリ キー クラス タイプ
ejb.primaryKeyClassName=ejbeans.PK

Home 名

開発者は、JNDI ネーム空間内の Bean に関連付けられている Home 名を指定する必要があります。このプロパティは、JNDI コンテキスト内のホーム オブジェクトをバインドするのに使用されます。

ejb.beanHomeName=sample2a.BalanceHome

ステート管理

ejb.stateManagementType プロパティは、セッション Bean のステートの管理方法を指定します。有効な値は、stateful_sessionstateless_session です。指定しない場合、EJB エンジンは、Bean をエンティティ Bean と想定します。

ejb.stateManagementType=stateful_session

許容 ID

開発者は、allowedIdentities プロパティを使用して、Bean のすべてのメソッドまたは特定のメソッドを呼び出す権限を与える ID またはロールの一覧を指定することによって、ロールベースのセキュリティを実装できます。指定しない場合、プロパティは、デフォルトでは、すべての認証されたユーザに設定されます。メソッドレベルのセキュリティを指定するには、メソッド名を接頭辞として使用します。

特殊な値 system を指定すると、system ID を使用した呼び出しのみが、メソッドを実行できます。

remove.ejb.allowedIdentities=system

特殊な値 all は、認証に関係なくすべてのユーザを示します。次の例では、すべてのユーザが create および getValue メソッドを使用できますが、save メソッドは貯蓄者ロール内のユーザしか使用できず、spend メソッドは支出者ロール内のユーザしか使用できないように制限します。

create.ejb.allowedIdentities=all
getValue.ejb.allowedIdentities=all
save.ejb.allowedIdentities=saver
spend.ejb.allowedIdentities=spender

オブジェクトのタイムアウト

Bean は、ejb.sessionTimeout を使用して、セッション オブジェクトのタイムアウトまでの秒数を指定できます。 指定しない場合、既定では、900 (15 分) に設定されます。

ejb.sessionTimeout=300

ejipt.isTimeoutFromCreate は、セッション オブジェクトのタイムアウトを、オブジェクト作成直後から始めるか、または直前のアクセスから始めるかを指定するためのプロパティです。このプロパティを指定しない場合、既定では、直前のアクセスに設定されます。

ejipt.isTimeoutFromCreate=true

Bean には、追加のプロパティを指定できます。利用可能なプロパティの詳細な一覧については、JRun JavaDocs の API マニュアルの EjiptProperties を参照してください。

既定のプロパティ

default.properties ファイルは通常、コンテナ レベルのプロパティを指定します。コンテナ内のすべての Bean は、このファイル内で設定されているプロパティにアクセスできます。たとえば、すべての Bean が利用できるコンテキストの数を設定したり、特定の Bean についてコンテキストの数を制限できます。また、各 Bean のプロパティ ファイル内でプロパティを指定するのではなく、JAR 内のすべての Bean に適用されるプロパティの指定もできます。

ejipt.maxContexts=100
BigBean.ejipt.maxContext=5

default.properties ファイル内で設定されるプロパティは、そのコンテナ内の Bean にのみ影響を与えます。プロパティの先頭に Bean の名前を付けると、その Bean のプロパティのみが設定されます。

マニフェスト

記述子ファイルを使用しない場合は、JAR ファイル内の Bean を識別する manifest ファイルを含める必要があります。

公開する各 Bean のプロパティ ファイルは、'Enterprise-Bean : True' というエントリとともに manifest ファイル内にリストされている必要があります。サブディレクトリ /ejbenas 内の EJB ごとに、次の 2 つのエントリがあります。

Name:ejbeans/Customer.properties
Enterprise-Bean:True

プロパティ ファイルのパスは、スラッシュを除き、manifest ファイル内にリストされているパスと同じである必要があります。このスラッシュには、manifest ファイルによって常にフォワード スラッシュが含まれます。また、name と Enterprise-Bean のペアは空白行で区切る必要があります。

公開プロパティ

deploy.properties ファイルには通常、サーバレベルのプロパティが含まれています。このファイルは、公開する Bean、ホスト名、データ ソース、および接続制限を指定する際に Deploy ツールによって使用されます。deploy.properties ファイルは、
/deploy ディレクトリ内に保存します。次の例は、簡単な deploy.properties ファイルを示します (接頭辞として # が付いているプロパティはコメントです)。

ejipt.classServer.host=localhost
ejipt.ejbJars=sample_ejb.jar
ejipt.jdbcSurces=source1
source1.ejipt.sourceURL=jdbc:odbc:sampledb
#source1.ejipt.sourceUser=xyz
#source1.ejipt.sourcePassword=pass
ejipt.logStackTrace=true
ejipt.userHomeName=sample.CustomerHome
ejipt.roleHomeName=ejipt.RoleHome
ejipt.loginSessionHomeName=sample.CustomerSessionHome
ejipt.storeName=default

ejipt.classServer.host はホスト名を識別します。ローカルで実行する場合は、値を localhost のままにできます。ただし、リモート クライアントが接続する場合は、値をサーバのホスト名に設定する必要があります。値を指定しない場合、既定では、プロパティは現在のホストの名前に設定されます。

公開する JAR ファイルの一覧を指定するには、ejipt.ejbJars プロパティを使用します。プロパティの値は、公開する JAR ファイルをカンマ区切りのリストにする必要があります。リストした JAR ファイルは、/deploy ディレクトリ内に格納されている必要があります。指定しない場合、既定では、プロパティは /deploy ディレクトリ内のすべての JAR ファイルに設定されます。各 JAR ファイルは、サーバ内に各 JAR ファイル独自のコンテナを持っています。

ejipt.jdbcSources および source1.ejipt.source...プロパティは、データベース情報を指定します。詳細は、『JRun によるアプリケーションの開発』を参照してください。

ejipt.logStackTrace=true は、すべてのスタック トレースが詳しく記録されるように指定します。

ejipt.userHomeName、ejipt.roleHomeName、および ejipt.loginSessionHomeName はすべて、ユーザ認証とセキュリティを参照します。詳細は、『JRun によるアプリケーションの開発』を参照してください。

instance.store は、サーバ内のすべてのコンテナによって使用される既定のストアです。instance.store の固有の名前は、ejipt.storeName プロパティを設定することによって指定できます。また、次のように、Bean の名前をプロパティの前に付けることによって、その Bean のインスタンス ストアも指定できます。

Customer.ejipt.storeName=Customer.store

データ ソースの定義

deploy.properties ファイルには、データ ソースを定義するためのプロパティも含まれています。次のスニペットは、source1、すなわちデータ ソースの定義を示します。

ejipt.jdbcSources=source1
source1.ejipt.sourceURL=jdbc:odbc:sample
source1.ejipt.sourceUser=xyz
source1.ejipt.sourcePassword=pass

ejipt.jdbcSource プロパティはソースに名前を付けます。ejipt.sourceURL は標準 Java URL 定義です。この場合、標準 JDBC/ODBC ドライバを使用して sample という名前のデータベースに接続します。ejipt.sourceUser および ejipt.sourcePassword プロパティには、データベースのユーザの名前とパスワードが含まれています。

サードパーティ JDBC ドライバを使用する場合は必ず、ejipt.sourceDriverClassName および ejipt.sourceURL プロパティを設定してください。

source1.ejipt.sourceDriverClassName=oracle.jdbc.driver.OracleDriver 
source1.ejipt.sourceURL=jdbc:oracle:thin:@host:1521:orcl

正しいプロパティ値は、特定のドライバに固有のものでなければなりません。必ず、ドライバに付属しているマニュアルを読んでください。

これらのプロパティの詳細は、『JRun によるアプリケーションの開発』を参照してください。

コンテナ管理パーシスタンスの使用

EJB が CMP を使用することを示すには、ejb.containerManagedFields プロパティ内のコンテナによって管理されるフィールドを指定します。Bean のプロパティ ファイル内に ejb.containerManagedFields が存在すると、CMP の使用がトリガされます。ejb.containerManagedFields は、CMP を instance.store と併用する場合に設定する唯一のプロパティです。次は、id はプライマリ キー フィールドで、value は保存するデータ フィールドである例を示します。

ejb.containerManagedFields= id,value

インスタンス ストア

instance.store を使用する場合は、Bean に finder メソッドを完全に実装する必要があります。

すべてのコンテナ管理フィールドは、ejb.containerManagedFields リスト内に表示され、instance.store を使用する場合は直列化可能である必要があります。

すべてのコンテナ管理フィールドは、公開記述子 ejb.containerManagedFields リスト内の <cmp-fields> 要素内に表示され、instance.store を使用する際は直列化可能である必要があります。

また、Bean は、SQL クエリで使用するデータなどの一時データの保存に使用できる追加のインスタンス変数も定義できます。