この付録では、OC4J固有のEJBデプロイメント・ディスクリプタであるorion-ejb-jar.dtd
内に含まれる要素について説明します。この付録ではその構造を示し、このDTDの要素について簡単に説明しますが、これらの要素のほとんどはこのマニュアルの他の項で詳しく説明されています。
DTDの場所はhttp://xmlns.oracle.com/ias/dtds/orion-ejb-jar.dtd
です。
このデプロイメント・ディスクリプタの説明は次のように分類されています。
各要素セクションの全体的な説明: このXMLファイルの要素の各セクションについては、「EJBに対するOC4J固有デプロイメント・ディスクリプタ」で説明します。
要素の説明: 各要素に関するアルファベット順の一覧とその説明は、「要素の説明」にあります。
アプリケーションをデプロイすると、OC4Jでは常にデフォルト要素でOC4J固有XMLファイルが自動生成されます。これらのデフォルトを変更する場合は、ユーザーの元のejb-jar.xml
ファイルがある場所にorion-ejb-jar.xml
ファイルをコピーして、この場所でそれを変更する必要があります。デプロイされた場所でXMLファイルを変更すると、アプリケーションが再度デプロイされたときにOC4Jはこの変更を上書きします。変更は、開発ディレクトリで変更された場合のみ、一定の状態に保たれます。
ユーザーは、図A-1と同様の推奨される開発構造内にOC4J固有XMLファイルを追加する必要があります。
OC4J固有デプロイメント・ディスクリプタには、エンティティBeanとこれらのBeanに対するセキュリティに関する詳細なデプロイ情報が含まれています。このデプロイメント・ディスクリプタ内の主となる重要な要素構造を次に示します。
<orion-ejb-jar deployment-time=... deployment-version=...> <enterprise-beans> <entity-deployment ...></entity-deployment> </enterprise-beans> <assembly-descriptor> <security-role-mapping ...></security-role-mapping> <default-method-access></default-method-access> </assembly-descriptor> </orion-ejb-jar>
<orion-ejb-jar>
メイン・タグの下の各セクションにはそれぞれ目的があります。これについて次の項で説明します。
<enterprise-beans>
セクションは、すべてのEJBへの追加的なデプロイ情報を定義します。各EJBのタイプに対するセクションがあります。
<enterprise-beans>
要素内の重要な要素(コンテナ管理の永続性を持つエンティティBean)について、次の項で説明します。
<entity-deployment>
セクションは、このJARファイル内でデプロイされたエンティティBeanに対する追加的なデプロイ情報を提供します。<entity-deployment>
セクションの構造を次に示します。
<entity-deployment call-timeout=... clustering-schema=... copy-by-value=... data-source=... exclusive-write-access=... do-select-before-insert=... isolation=... location=... locking-mode=... max-instances=... min-instances=... max-tx-retries=... tx-retry-wait=... update-changed-fields-only=... name=... pool-cache-timeout=... table=... validity-timeout=... force-update=... wrapper=... local-wrapper=... delay-updates-until-commit=... findByPrimaryKey-lazy-loading=... > <ior-security-config> <transport-config> <integrity></integrity> <confidentiality></confidentiality> <establish-trust-in-target></establish-trust-in-target> <establish-trust-in-client></establish-trust-in-client> </transport-config> <as-context> <auth-method></auth-method> <realm></realm> <required></required> </as-context> <sas-context> <caller-propagation></caller-propagation> </sas-context> </ior-security-config> <primkey-mapping> <cmp-field-mapping ejb-reference-home=... name=... persistence-name=... persistence-type=...></cmp-field-mapping> </primkey-mapping> <cmp-field-mapping ejb-reference-home=... name=... persistence-name=... persistence-type=...> </cmp-field-mapping> <finder-method partial=... query=... lazy-loading=... prefetch-size=... > <method></method> </finder-method> <env-entry-mapping name=...></env-entry-mapping> <ejb-ref-mapping location=... name=... /> <resource-ref-mapping location=... name=... > <lookup-context location=...> <context-attribute name=... value=... /> </lookup-context> </resource-ref-mapping> <resource-env-ref-mapping location=... name=... /> </entity-deployment>
各要素グループの説明は、OC4Jドキュメント・セットの次の項にあります。
<entity-deployment>
要素を含むエンティティBeanの例は、このマニュアルの第1章「コンテナ管理の永続性を持つエンティティBeanの理解」、第3章「OC4JにおけるOrion CMPサポートの理解」および第5章「コンテナ管理の永続性を持つEJB 2.0エンティティBeanの構成」に説明があります。
<io-security-config>
要素は相互運用性に関するCSIv2セキュリティ・ポリシーを構成します。この詳細な説明は、『Oracle Containers for J2EEサービス・ガイド』の相互運用性に関する章にあります。
<primkey-mapping>
要素は、主キーを表すコンテナ管理の永続フィールドに主キーをマップします。詳細は「永続フィールドのデータベースに対する明示的マッピングの構成」を参照してください。
<cmp-field-mapping>
要素は各<cmp-field>
要素をそのデータベース行にマップします。詳細は「永続フィールドのデータベースに対する明示的マッピングの構成」を参照してください。
<finder-method>
要素はEJB 1.1エンティティBeanに対するfinderメソッドの作成に使用されます。EJB 2.0のfinderメソッドを作成するには、「EJB QLのfinderメソッドの実装」を参照してください。
<env-entry-mapping>
要素は環境変数をJNDI名にマップします。
<ejb-ref-mapping>
要素はあらゆるEJB参照をJNDI名にマップします。
<resource-ref-mapping>
要素はあらゆるEJB参照をJNDI名にマップします。
<resource-env-ref-mapping>
要素はリソースの管理対象オブジェクトのマップに使用されます。
表A-1は<entity-deployment>
要素の属性の一覧です。
表A-1 <entity-deployment>要素の属性
属性 | 説明 |
---|---|
|
ビジネス・メソッド/ライフ・サイクル・メソッドを起動するリソースを待機する最大時間を指定します。これは、ビジネス・メソッドが起動するまでのタイムアウトではありません。 タイムアウトに達した場合、 デフォルト値は90000ミリ秒です。0に設定すると、タイムアウトになりません。詳細は『Oracle Application Serverパフォーマンス・ガイド』のEJBに関する項を参照してください。 |
|
使用しないでください。適用されません。 |
|
EJBコールにおけるすべての受信および送信パラメータをコピー(クローン作成)するかどうかを示します。アプリケーションが高速化のためにcopy-by-valueセマンティクスを前提としないことが確実ならば、 デフォルト値は |
|
使用されるデータ・ソースの名前を指定します。 |
|
EJBサーバーがバックエンド・データベースへの排他的書込み(更新)アクセスを保持するかどうかを定義します。これは、 このパラメータは、使用されるコミット・オプションに対応します(EJB 2.0仕様で定義されているA、BまたはC)。
ロックが 詳細は「データベースへの排他的書込みアクセスの構成」を参照してください。 |
|
挿入の前のSELECT実行を回避するかどうかを指定します。挿入前のSELECTの実行を回避する場合は、 一意キー制約がエンティティに対して定義されている場合は、これを パフォーマンス向上のためには、 デフォルト値は |
|
このBeanがバインドされるJNDI名を指定します。 |
|
データベース操作の分離レベル(「データベース分離レベルの構成」を参照)を指定します。Oracleデータベースで有効な値は 詳細は、「エンティティBeanのデータベース分離レベルとリソース競合」、「データベース分離レベルの構成」および『Oracle Application Serverパフォーマンス・ガイド』を参照してください。 |
|
並行性モード(「並行性モードの構成」と『Oracle Application Serverパフォーマンス・ガイド』を参照)を指定します。並行性モードは |
|
インスタンス化またはプールされたままになるBean実装インスタンスの最大数を指定します。 デフォルト値は0(つまり無制限)です。 |
|
インスタンス化またはプールされたままになるBean実装インスタンスの最小数を指定します。 デフォルト値は0です。 |
|
システムレベル障害のためにロールバックされたトランザクションを再試行する回数を指定します。 通常は、エラーが再試行で解決可能な場合のみ再試行を追加します。たとえば、serializable分離レベルを使用していて、競合が発生したときにトランザクションが自動的に再試行されるようにする場合に、再試行を使用できます。ただし、競合の発生をBeanに通知する場合は、 デフォルト値は0です。詳細は『Oracle Application Serverパフォーマンス・ガイド』のEJBに関する項を参照してください。 |
|
トランザクションを再試行する間、待機する時間(秒)を指定します。 デフォルト値は60です。 |
|
デフォルト値は |
|
EJBデプロイメント・ディスクリプタのアセンブリ・セクションにおけるBeanの名前と一致する、Beanの名前を指定します。 |
|
Bean実装インスタンスがプール(未割当て)された状態のままになる時間(秒)を指定します。 デフォルト値は60です。 |
|
データベースの表の名前を指定します。 |
|
エンティティが(リロードされるまで)キャッシュ内で有効な最大時間(ミリ秒)。レガシー・システムからの更新がめったに行われない疎結合環境に有効です。この属性は、 外部でのデータ変更がない(このため、 Beanが通常は外部で変更されない場合は |
|
OC4Jでは永続データの変更が不明な場合に、 デフォルト値は |
|
このBeanに対するOC4Jリモート・ホーム・ラッパー・クラスの名前を指定します。これは内部サーバー値であるため、編集しないでください。 |
|
このBeanに対するOC4Jローカル・ホーム・ラッパー・クラスの名前を指定します。これは内部サーバー値であるため、編集しないでください。 |
|
トランザクション・データのフラッシュをコミット時間まで遅延させるかどうかを指定します。 デフォルト値は すべてのEJBメソッド( |
<jem-server-extension>
セクションは、AC4JデータバスがインストールされているデータベースのJNDI名を定義します。<jem-server-extension>
の構造を次に示します。
<jem-server-extension data-source-location=... scheduling-threads=...> <description></description> <data-bus data-bus-name=... url=.../> </jem-server-extension>
この要素の詳細は、『Oracle Containers for J2EEサービス・ガイド』を参照してください。
<jem-deployment>
セクションは、このJARファイル内でデプロイされたアクティブBeanに対する追加的なデプロイ情報を提供します。<jem-deployment>
セクションの構造を次に示します。
<jem-deployment jem-name=... ejb-name=...> <description></description> <data-bus data-bus-name=... url=.../> <called-by> <caller caller-identity=.../> </called-by> <security-identity> <description></description> <use-caller-identity></use-caller-identity> </security-identity> </jem-deployment>
<called-by>
要素を使用すると、デプロイ時にAC4J Beanで定義された非同期メソッドの使用を制御または制限できます。次の例で、CLIUSER
、SVRUSER
およびXTRAUSER
はAC4JBeanA
で定義されたすべてのメソッドを起動可能で、AC4JBeanA
はEJBのname="ABean"
に対応します。USER1
またはUSER2
がこのAC4JBeanA
を起動した場合、コンテナはSecurityException
をスローします。
<jem-deployment jem-name="AC4JBeanA" ejb-name="ABean"> <called-by> <caller caller-identity="CLIUSER"/> <caller caller-identity="SVRUSER"/> <caller caller-identity="XTRAUSER"/> </called-by> </jem-deployment>
アプリケーションのデプロイ実行者がrole="USER1"
でABean EJBに対するセキュリティ・ロールを定義した場合、USER1
はABean
EJBのすべてのメソッドを同時に起動できます。ただし、<called-by>
要素がUSER1
に対して定義されていなければ、USER1
はAC4JBeanA
で同じ非同期メソッドを起動できません。
この要素の詳細は、『Oracle Containers for J2EEサービス・ガイド』を参照してください。
Beanのメソッド(と、場合によってはそのメソッドのパラメータ)の指定には、次の構造が使用されます。
<method> <description></description> <ejb-name></ejb-name> <method-intf></method-intf> <method-name></method-name> <method-params> <method-param></method-param> </method-params> </method>
次のいずれかのスタイルを使用できます。
指定したBeanのホームおよびリモート・インタフェースのすべてのメソッドを参照するときは、メソッドを次のように指定します。
<method> <ejb-name>EJBNAME</ejb-name> <method-name>*</method-name> </method>
同じオーバーロードされた名前を持つ複数のメソッドを参照するときは、メソッドを次のように指定します。
<method> <ejb-name>EJBNAME</ejb-name> <method-name>METHOD</method-name> </method>>
オーバーロードされた名前を持つ一連のメソッド内の1つのメソッドを参照するときは、メソッド内の各パラメータを次のように指定します。
<method> <ejb-name>EJBNAME</ejb-name> <method-name>METHOD</method-name> <method-params> <method-param>PARAM-1</method-param> <method-param>PARAM-2</method-param> ... <method-param>PARAM-n</method-param> </method-params> </method>
<method>
要素はセキュリティおよびMDBセクション内で使用されます。
個々のBeanに関するデプロイ情報を指定する以外に、<assembly-descriptor>
セクションでセキュリティに対する追加的なデプロイ・マッピング情報も指定できます。<assembly-descriptor>
セクションの構造を次に示します。
<assembly-descriptor> <security-role-mapping impliesAll=... name=...> <group name=... /> <user name=... /> </security-role-mapping> <default-method-access> <security-role-mapping impliesAll=... name=...> <group name=... /> <user name=... /> </security-role-mapping> </default-method-access> </assembly-descriptor>
アセンブリ・ディスクリプタ要素のマッピング。
アプリケーションのデプロイ実行者が、AC4J Beanで定義された非同期メソッドの使用を制御または制限することを可能にします。ユーザーは、この要素でBeanのすべてのメソッドの実行を許可されるユーザーIDを指定します。AC4J Beanを実行できるIDは、1つ以上の<caller>
要素で識別されます。
AC4J Beanでメソッドの実行を許可される各コール元IDは、1つの<caller>
要素で定義されます。
属性:
永続フィールドに対するデプロイ情報。別の動作を定義するサブタグが使用されていない場合、シリアライズまたは認識されたプリミティブ型のネイティブ処理の間、フィールドが永続的になります。
属性:
Collection
型のリレーショナル・マッピング。Collection
はn個の順序付けされていない(順序が指定されておらず、関連付けられていない)項目で構成されます。マッピングを含むフィールドはjava.util.Collection
型になります。
属性:
table
: データベースの表の名前。
コンテキストに送信される属性。JNDIで必須の属性はjava.naming.factory.initial
のみで、これはコンテキスト・ファクトリ実装のクラス名です。
属性:
name
: 属性の名前。
value
: 属性の値。
OC4Jオブジェクトに対する固有データバスの名前とURL。
属性:
data-bus-name
: データバスのユーザー定義名。
url
: データバスのURLで、これはJDBC URLと同様になります。
method-permission
に関連付けられていないメソッドに対するデフォルト・メソッド・アクセス・ポリシー。
短い説明。
エンタープライズBeanの名前。この名前はejb-jar.xml
ファイルの作成者によって、デプロイメント・ディスクリプタのエンタープライズBeanに名前を付けるために割り当てられます。この名前は、同じejb-jar.xml
ファイルのエンタープライズBeanの名前の中で一意である必要があります。エンタープライズBeanコードは名前に依存しません。このため、アプリケーションのアセンブリ・プロセスの際にエンタープライズBeanの機能をこわさずに名前を変更できます。デプロイメント・ディスクリプタの<ejb-name>
要素と、デプロイ実行者がエンタープライズBeanのホームに割り当てるJNDI名の間に関係は構築されていません。この名前はNMTOKEN
の語彙ルールに準拠する必要があります。
別のエンタープライズBeanのホームへの参照を宣言します。この要素はデプロイ時にこれをJNDIロケーションに関連付けます。
属性:
location
: EJBホームを検索するためのJNDIロケーション。
name
: ejb-refの名前。ejb-jar.xml
ファイルのejb-refの名前に一致します。
このEJB JARファイルに含まれるBeanを一覧表示します。
エンティティBeanに対するデプロイ情報が含まれます。この要素の属性の一覧と説明は表A-1を参照してください。
主キーを使用してエンティティ参照を永続するための構成を指定します。このタグのサブタグは主キーを永続する方法を指定します。
属性:
home
: Beanを検索するためのEJBHome
のJNDIロケーション。
アセンブリ・ディスクリプタの<env-entry>
要素の値をオーバーライドします。これはEARにデプロイ固有の値が指定されることを防ぎます。要素のボディが値を表します。
属性:
name
: コンテキスト・パラメータの名前。
このフィールドに対するフィールドベース(Javaクラス・フィールド)のマッピング永続性の構成を指定します。永続されるフィールドはpublic
(static
ではなくfinal
でもない)フィールドであり、含まれているオブジェクトの型にはゼロ引数コンストラクタが存在する必要があります。
コンテナ管理のfinderメソッドの定義。これはBeanのホームのfindBy<CRITERION>
メソッドでの選択基準を定義します。
属性:
partial
: 問合せが部分的なものかどうか指定します。部分的問合せはSQL問合せのWHERE
句またはORDER
句(これがORDERで始まる場合)です。問合せはデフォルトでは部分的になります。partial="false"
と指定されている場合、完全問合せがquery属性の値として入力され、ユーザーは問合せによってすべての永続フィールドを含む結果セットが生成されることを確認する必要があります。これは、表結合を含む高度な問合せを実行する際に効果的です。
query
: SQL文の問合せ部分を定義します。これはSQL文でWHERE
キーワードに続くセクションです。特別なトークンはメソッド引数番号を示す$number
と、永続フィールド名を示す$name
です。たとえば、findByAge(int age)
に対する問合せは"$1 = $age"
となります(永続フィールドの名前をage
と仮定しています)。
lazy-loading
: エンティティBeanのfinderメソッドでは、遅延ロードでselectメソッドが複数回起動される場合があります。遅延ロードをオンにして、このfinderメソッドの1回のみの実行を強制するには、このプロパティをtrue
に設定します。デフォルト値はfalse
です。
prefetch-size
: Oracle JDBCドライバには、問合せ中に結果セットが移入されている間、クライアントにプリフェッチする行数を、ユーザーが設定できるようにする拡張機能が含まれています。これによって、データがフェッチされるときは複数のデータ行がフェッチされるため、データベースへのラウンドトリップが減少します。追加データはクライアントによる以後のアクセスのため、クライアント側バッファに格納されます。プリフェッチには任意の行数を設定できます。クライアントにプリフェッチする行数のデフォルトは10です。ここで設定された数字はJDBCドライバに渡されます。JDBCドライバによるプリフェッチの使用の詳細は、『Oracle Database JDBC開発者ガイドおよびリファレンス』を参照してください。
この<security-role-mapping>
が適用されるグループ。つまり、指定されたグループのすべてのメンバーがこのロールに含まれます。
属性:
name
: グループの名前。
<ior-security-config>
要素は相互運用性に関するCSIv2セキュリティ・ポリシーを構成します。この詳細な説明は、『Oracle Containers for J2EEサービス・ガイド』の相互運用性に関する章にあります。
AC4Jコンテナへのデプロイに対するアクティブなエンタープライズBeanを指定します。
属性:
データバスがインストールされているデータベース・サーバーを記述します。
属性:
リソースの取得に使用されるオプションのjavax.naming.Context
実装の仕様。これは、サード・パーティJMSサーバーなどのサード・パーティ・モジュールを使用する際に役立ちます。リソース・ベンダーから提供されたコンテキスト実装を使用するか、それがない場合は、ベンダー・ソフトウェアとのネゴシエーションを行う実装を記述します。
属性:
マップ・キーのマッピングを指定します。マップ・キーは常に不変です。
属性:
Beanのメソッド(と、場合によってはそのメソッドのパラメータ)を指定します。
メソッドの要素が、リモートおよびホーム・インタフェースの両方で定義された同じ名前およびシグネチャを持つメソッドを区別できるようにします。この要素はホームまたはリモートのどちらかになります。
エンタープライズBeanメソッドの名前またはアスタリスク( * )文字が含まれます。アスタリスクは、要素がエンタープライズBeanのリモートおよびホーム・インタフェースのすべてのメソッドを示すときに使用されます。
メソッド・パラメータの完全修飾Java型名が含まれます。
メソッド・パラメータの完全修飾Java型名の一覧が含まれます。
orion-ejb-jar.xml
ファイルには、Beanに対するOC4J固有デプロイ情報が含まれます。これは初期のデプロイ・プロパティの指定に使用されます。各デプロイの後、デプロイメント・ディスクリプタ・ファイルは追加情報のためサーバーによって再フォーマットされ、変更されます。
属性:
deployment-time
: 最終デプロイ時刻(10進数によるlong型のミリ秒)。最終編集日と一致しない場合はJARが再デプロイされます。これは内部サーバー値であるため、編集しないでください。
deployment-version
: このJARのデプロイに使用されたOC4Jのバージョン。現在のバージョンに一致しない場合はJARが再デプロイされます。これは内部サーバー値であるため、編集しないでください。
主キーがマップされる方法を指定します。
このフィールドに対するプロパティベース(Beanプロパティ)のマッピング永続性の構成を指定します。プロパティはEJB 2.0仕様に準拠し、含まれているオブジェクトの型には空のコンストラクタが存在する必要があります。これはEJB 2.0仕様内でも指定されています。
データ・ソースなどの外部リソースへの参照を宣言します。この要素はデプロイ時にデータ・ソースをJNDIロケーションに関連付けます。
属性:
リソースの管理対象オブジェクトをマップします。これらのオブジェクトは同時にJNDIから取得されます。この要素は接続先オブジェクトをマップします。
属性:
<run-as-specified-identity>
要素の使用時に、AC4J EJBメソッドが実行されるセキュリティ・ロール。
AC4J EJBのすべてのメソッドが特定のIDの元で実行されることを指定します。つまり、コンテナは特定のメソッドを実行する際に別のロールの許可をチェックしません。かわりにコンテナは、特定のセキュリティIDの元のすべてのAC4J EJBメソッドを実行します。
AC4Jデータバスで、AC4J Beanセキュリティに対してコール元またはrun-as IDを使用するかどうかを記述します。
グループおよびユーザーへの、ロールの実行時のマッピング。アセンブリ・ディスクリプタの同じ名前のセキュリティ・ロールにマップします。
属性:
Set
型のリレーショナル・マッピングを指定します。Set
はn個の一意の順序付けされていない(順序が指定されておらず、関連付けられていない)項目で構成されます。マッピングを含むフィールドはjava.util.Set
型になります。
属性:
table
: データベースの表の名前。
AC4J Beanのすべてのメソッドがコール元のIDの元で実行されることを指定します。
この<security-role-mapping>
要素が適用されるユーザー。
属性:
name
: ユーザーの名前。
一連のフィールドの主キー部分のマッピングを指定します。
属性: