Sun ONE Application Server 7 Enterprise Java Beans 開発者ガイド |
Enterprise JavaBean のアセンブルと配備この章では、Sun ONE Application Server 7 環境で Enterprise JavaBeans をアセンブルおよび配備する方法について説明し、EJB XML ファイルの作成に使用する要素およびサブ要素に関する情報を提供します。
注 アセンブリと配備に関する一般情報については、『Sun ONE Application Server 開発者ガイド』を参照してください。EJB をアセンブルする前に、このマニュアルに示された配備に関する情報を十分に理解している必要があります。
この章には次の項目があります。
- EJB の構造
- 配備記述子の作成
- Enterprise JavaBeans の配備
- sun-ejb-jar_2_0-0.dtd ファイルの構造
- sun-ejb-jar.xml ファイルの要素
- EJB XML ファイルの例
EJB に関連する要素のリストは、「要素一覧」にアルファベット順に記載されています。
EJB の構造
EJB Java ARchive (JAR) ファイルは、Enterprise JavaBeans のアセンブリに使う標準形式です。このファイルには、Bean クラス (ホーム、リモート、ローカル、および実装)、すべてのユーティリティクラス、および配備記述子 (ejb-jar.xml および sun-ejb-jar.xml) が格納されます。
開発者が作成する EJB JAR ファイルには、1 つ以上の Enterprise JavaBeans が含まれ、通常は、アセンブリ手順は含まれません。一方、アセンブリ担当者が作成する EJB JAR ファイルには、1 つ以上の Enterprise JavaBeans と、それらの Enterprise JavaBeans を 1 つのアプリケーション配備ユニットに結合する方法を示すアプリケーションアセンブリ手順が含まれます。
EJB JAR ファイルは、EAR (Enterprise ARchive) ファイルの一部に含まれないスタンドアロンとしても、EAR ファイルの一部としても使用できます。
アプリケーションのファイル例は install_root/samples/j2ee/ にあります。
配備記述子の作成
J2EE モジュールは、1 つまたは複数の J2EE コンポーネントの集合で、各コンポーネントは同一コンテナタイプの 2 つの配備記述子を持っています。1 つは J2EE 標準の配備記述子で、もう 1 つは Sun ONE Application Server 固有の配備記述子です。Enterprise JavaBeans では、次の 3 つの配備記述子ファイルがこれに該当します。
- ejb-jar.xml
J2EE 標準ファイル。『Enterprise JavaBeans Specification, v2.0』に定義されている
- sun-ejb-jar.xml
Sun ONE Application Server 固有のファイル。この章で詳しく説明する
- sun-cmp-mappings.xml
Sun ONE Application Server 固有のファイル。配備する Bean がコンテナ管理による持続性を使用する場合に使用する
注 コンテナ管理による持続性に関連付けられた XML ファイルについては、「sun-cmp-mappings.xml ファイルの要素」を参照してください。
配備記述子ファイルを作成するもっとも簡単な方法は、管理インタフェースまたは Sun ONE Studio 4 IDE を使用して EJB モジュールを配備することです。詳細については、『Sun ONE Application Server 開発者ガイド』を参照してください。EJB XML ファイルの例は、「EJB XML ファイルの例」を参照してください。
これらのファイルを作成した後に、管理インタフェースまたは、エディタとコマンド行ユーティリティ (Ant など) の組み合わせを使用して、編集、再構築、および再配備を行い配備記述子の情報を更新できます。
注 配備記述子を手動で作成することもできます。
J2EE の標準配備記述子は、1.3 の J2EE 仕様に示されています。EJB 配備記述子の詳細は、『Enterprise JavaBeans Specification, v2.0』の第 22 章を参照してください。サンプルアプリケーションは、アセンブルと配備に役立つ ANT ターゲットをいくつか作成します。ANT については、『Sun ONE Application Server 開発者ガイド』を参照してください。
Enterprise JavaBeans の配備
Enterprise JavaBean の配備、配備取り消し、または再配備を行うときに、サーバーを再起動する必要はありません。
注 スタブとスケルトンは配備時に生成されます。リッチクライアントで使用するクライアント JAR ファイルは、スタブとスケルトンから作成できます。
この節には次の項目があります。
管理インタフェースの使用
管理インタフェースを使って EJB アプリケーションを配備するには、次のようにします。
- サーバーインスタンスの下にある「アプリケーション」コンポーネントを開きます。
- 「EJB モジュール」ページに移動します。
- 「配備」をクリックします。
- JAR モジュールへのフルパスを入力するか、または「ブラウズ」をクリックして目的のモジュールを選択して、「了解」をクリックします。
コマンド行インタフェースの使用
コマンド行を使って Enterprise JavaBean を配備するには、次のようにします。
- 配備記述子ファイル (ejb-jar.xml および sun-ejb-jar.xml) を手動で編集します。
- Ant ビルドコマンド (build jar など) を実行して、JAR モジュールを再アセンブリします。
- asadmin deploy コマンドを使って JAR モジュールを配備します。構文は次のとおりです。
asadmin deploy -type ejb [-name component-name] [-force=true] [-upload=true] -instance instancename filepath
たとえば、次のコマンドでは、EJB アプリケーションがスタンドアロンのモジュールとして配備されます。
asadmin deploy -type ejb -instance inst1 myEJB.jar
Sun ONE Studio 4 IDE の使用
Sun ONE Application Server にバンドルされている Sun ONE Studio 4 IDE を使って、Enterprise JavaBeans のアセンブリと配備を行うことができます。Sun ONE Studio 4 の使用については、Sun ONE Studio 4, Enterprise Edition のチュートリアルを参照してください。
注 Sun ONE Studio 4 では、Web アプリケーションの配備を「実行」と呼びます。
Enterprise JavaBeans の再読み込み
Enterprise JavaBean のコードを変更した場合でも、動的再読み込みが有効になっていれば、その Enterprise JavaBean を再配備したり、サーバーを再起動したりする必要はありません。変更したファイルをアプリケーションの配備先ディレクトリ (instance-dir/applications など) にドロップするだけで変更が適用されます。
管理インタフェースで動的再読み込みを有効にするには、次のようにします。
- 管理インタフェースで、サーバーインスタンスを選択します。
- 「アプリケーション」を選択します。
「アプリケーション - プロパティ」ページが表示されます。
- 「再読み込みを有効」ボックスをオンにして動的再読み込みを有効にします。
- 「再読込のポーリング間隔」フィールドに秒数を入力して、アプリケーションとモジュールにコードの変更がないか確認して動的に再読み込みする間隔を設定します。
- 「保存」をクリックします。
詳細については、『Sun ONE Application Server 管理者ガイド』を参照してください。
さらに、新しいサーブレットファイルの読み込み、変更に関連する EJB の再読み込み、または配備記述子の変更の再読み込みを行うには、次の操作を行う必要があります。
- 配備されたアプリケーションのルートに .reload という名前の空のファイルを作成します。
instance_dir/applications/j2ee-apps/app_name/.reload
または個別に配備されたモジュールに作成します。
instance_dir/applications/j2ee-modules/module_name/.reload
- 上記の変更を Bean または配備記述子に加えるたびに、.reload ファイルのタイムスタンプ (UNIX では touch .reload) を明示的に更新します。
再読み込み監視スレッドが定期的に .reload ファイルのタイムスタンプを確認し、変更を検出します。検出間隔は、デフォルトの設定では 2 秒です。この値は、server.xml ファイルの dynamic-reload-poll-interval-in-seconds で変更できます。
EJB アプリケーションは、次のいずれかの方法で配備できます。
配備の詳細については、『Sun ONE Application Server 開発者ガイド』を参照してください。
sun-ejb-jar_2_0-0.dtd ファイルの構造
sun-ejb-jar_2_0-0.dtd ファイルは、sun-ejb-jar.xml ファイルの構造を定義します。含むことができる要素、およびそれらの要素に持たせることができるサブ要素と属性が定義されます。sub-ejb-jar_2_0-0.dtd ファイルは、install-dir/lib/dtds ディレクトリに保存されています。
注 sun-ejb-jar_2_0-0.dtd ファイルを編集しないでください。このファイルの内容は、Sun ONE Application Server の新しいバージョンだけで変更されます。
DTD ファイルおよび XML の全般的な情報については、次のサイトにある XML 仕様書を参照してください。
DTD ファイルに定義される各要素 (対応する XML ファイルに含まれていることもあります) には次の情報が含まれます。
EJB に関連する要素のリストは、「要素一覧」にアルファベット順に記載されています。
サブ要素
要素にはサブ要素を含めることができます。たとえば、次のコードは cmp-resource 要素を定義しています。
<!ELEMENT cmp-resource (jndi-name, default-resource-principal?)>
この ELEMENT タグは、cmp-resource というリソース要素に jndi-name および default-resource-principal というサブ要素を含めることができるように指定しています。疑問符 (?) は、サブ要素 default-resource-principal を 0 または 1回指定できることを示します。
それぞれのサブ要素には、指定回数を決めるオプション文字 (サフィックス) を追加できます。
次の表は、サブ要素に追加したサフィックスによって決定されるサブ要素の必要規則 (指定可能回数) について説明しています。左側の列にはサブ要素の終了文字、右側の列には対応する必要指定数を示しています。
   サブ要素のサフィックスの必要規則
サフィックス
指定回数
element*
このサブ要素を含まないか、1 個以上含めることができる
?element
このサブ要素を含まないか、1 個含めることができる
element+
このサブ要素を 1 個以上含まなければならない
element (サフィックスなし)
このサブ要素を 1 個だけ含まなければならない
要素にほかの要素を含めることができない場合は、カッコで囲まれた要素名のリストの代わりに、EMPTY または (#PCDATA) が表示されます。
データ
要素の中には、サブ要素の代わりに文字データを含むものもあります。これらの要素は、次の形式で定義されます。
<!ELEMENT element-name (#PCDATA)>
次に例を示します。
<!ELEMENT description (#PCDATA)>
Sun ONE Application Server のXML ファイルでは、データ要素内の空白はデータの一部として扱われます。そのため、データ要素で区切られたデータの前後には余分な空白がないようにする必要があります。次に例を示します。
<description>class name of session manager</description>
<password>secret</password>
属性
要素には属性 (名前と値のペア) を含めることができます。属性は、ATTLIST タグを使って属性リストに定義します。
sun-ejb-jar.xml ファイル内の要素には、属性を含むものはありません。
sun-ejb-jar.xml ファイルの要素
EJB に関連する要素のリストは、「要素一覧」にアルファベット順に記載されています。
注 コンテナ管理による持続性のマッピングに関連付けられた DTD および XML ファイルについては、「sun-cmp-mappings.xml ファイルの要素」を参照してください。
この節では、sun-ejb-jar_2_0-0.dtd ファイル内の XML 要素について説明します。わかりやすくするために、各要素を次のように分類しています。
- 一般的な要素
- ロールマッピング要素
- 参照要素
- セキュリティ要素
- 持続性要素
- プールとキャッシュの要素
- クラス要素
一般的な要素
全般に関する要素は次のとおりです。
ejb
アプリケーション内の 1 つの Enterprise JavaBean に関する実行時プロパティを定義します。以下に示すサブ要素は、次のように特定の Enterprise JavaBean に適用されます。
- すべてのタイプの Beans - ejb-name、ejb-ref、resource-ref、resource-env-ref、cmp、ior-security-config、gen-classes、jndi-name
- ステートレスセッション Beans とメッセージ駆動型 Beans - bean-pool
- ステートフルセッション Beans - bean-cache
- エンティティ Beans (BMP) - is-read-only-bean、refresh-period-in-seconds、commit-option、bean-cache
- メッセージ駆動型 Bean - mdb-connection-factory、jms-durable-subscription-name、jms-max-messages-load、bean-pool
サブ要素
次の表は、ejb 要素のサブ要素を示します。
例
<ejb>
<ejb-name>CustomerEJB</ejb-name>
<jndi-name>customer</jndi-name>
<resource-ref>
<res-ref-name>jdbc/SimpleBank</res-ref-name>
<jndi-name>jdbc/PointBase</jndi-name>
</resource-ref>
<is-read-only-bean>false</is-read-only-bean>
<commit-option>B</commit-option>
<bean-pool>
<steady-pool-size>10</steady-pool-size>
<resize-quantity>10</resize-quantity>
<max-pool-size>100</max-pool-size>
<pool-idle-timeout-in-seconds>
600
</pool-idle-timeout-in-seconds>
</bean-pool>
<bean-cache>
<max-cache-size>100</max-cache-size>
<resize-quantity>10</resize-quantity>
<removal-timeout-in-seconds>3600</removal-timeout-in-seconds>
<victim-selection-policy>LRU</victim-selection-policy>
</bean-cache>
</ejb>ejb-name
参照する Enterprise JavaBean の名前と表示名を一致させます。この名前は、Enterprise JavaBean の名前を EJB JAR ファイルの配備記述子に記録するときに同ファイルの作成者によって割り当てられます。同じ EJB JAR ファイルでは、Enterprise JavaBean の名前を一意にする必要があります。
配備記述子に記載される ejb-name と配備担当者が EJB のホームに割り当てる JNDI 名の間には、設計上の関連性はありません。
サブ要素
なし
例
<ejb-name>EmployeeService</ejb-name>
enterprise-beans
アプリケーションの EJB JAR ファイルに関するすべての実行時プロパティを指定します。
サブ要素
次の表は、enterprise-beans 要素のサブ要素を示します。
例
<enterprise-beans>
<ejb>
ejb-name>CustomerEJB</ejb-name>
<jndi-name>customer</jndi-name>
<resource-ref>
<res-ref-name>jdbc/SimpleBank</res-ref-name>
' <jndi-name>jdbc/PointBase</jndi-name>
</resource-ref>
<is-read-only-bean>false</is-read-only-bean>
<commit-option>B</commit-option>
<bean-pool>
<steady-pool-size>10</steady-pool-size>
<resize-quantity>10</resize-quantity>
<max-pool-size>100</max-pool-size>
<pool-idle-timeout-in-seconds>
600
</pool-idle-timeout-in-seconds>
</bean-pool>
<bean-cache>
<max-cache-size>100</max-cache-size>
<resize-quantity>10</resize-quantity>
<removal-timeout-in-seconds>3600</removal-timeout-in-seconds>
<victim-selection-policy>LRU</victim-selection-policy>
</bean-cache>
</ejb>
</enterprise-beansis-read-only-bean
読み取り専用 Bean を示すフラグです。
サブ要素
なし
例
<is-read-only-bean>false</is-read-only-bean>
refresh-period-in-seconds
読み取り専用 Bean をデータソースによって更新する間隔を指定します。これをゼロ以下に設定すると、Bean は更新されない。1 以上を設定すると、指定した間隔で Bean のインスタンスが更新されます。この間隔はコンテナにとって参考程度に過ぎません。デフォルト値は 600 です。
サブ要素
なし
sun-ejb-jar
アプリケーションの EJB JAR ファイルに関する Sun ONE Application Server 固有の設定を定義します。これはルート要素であり、sun-ejb-jar.xml ファイル内に 1 つの sun-ejb-jar しか指定できません。
このファイルの例については、「sun-ejb-jar.xml ファイルの例」を参照してください。
サブ要素
次の表は、sun-ejb-jar 要素のサブ要素を示します。
   sun-ejb-jar 要素のサブ要素
サブ要素
必要指定数
説明
0 または 1 個以上
対応する J2EE XML ファイル内のロールを、ユーザーまたはグループにマップする
1 個のみ
アプリケーションの EJB JAR ファイルに関するすべての実行時プロパティを記述する
unique-id
一意のシステム識別子を指定します。このデータは、配備時および再配備時に自動的に生成および更新されます。開発者は、配備後にこの値を変更できません。
サブ要素
なし
ロールマッピング要素
ロールマッピング要素は、EJB JAR の role-name エントリに指定されたロールを、環境固有のユーザーまたはグループにマップします。ユーザーにマップする場合、そのユーザーは、現在のレルムに存在し、現在の認証方法によってサーバーにログインできる具体的なユーザーでなければなりません。グループにマップする場合は、レルムがグループをサポートしている必要があり、そのグループは現在のレルムに存在する具体的なグループでなければなりません。グループのマッピングを有効にするためには、そのレルム内でそのグループに属するユーザーが 1 人以上存在している必要があります。
次に、ロールマッピング要素を示します。
group-name
グループ名を指定する
サブ要素
なし
principal
プラットフォームでのユーザー名を指定するノードを定義します。
サブ要素
次の表は、principal 要素のサブ要素を示します。
   principal 要素のサブ要素
サブ要素
必要指定数
説明
1 個のみ
ユーザーの名前を指定する
principal-name
run-as ロールが指定されている Enterprise JavaBean 内の主体 (ユーザー) 名を指定します。
サブ要素
なし
role-name
ejb-jar.xml ファイルの security-role 要素内の role-name を指定します。
サブ要素
なし
例
<role-name>employee</role-name>
security-role-mapping
ユーザーおよびグループにロールをマップします。
サブ要素
次の表は、security-role-mapping 要素のサブ要素を示します。
server-name
アプリケーションを配備するサーバーの名前を指定します。
サブ要素
なし
参照要素
参照に関する要素は次のとおりです。
- ejb-ref
- ejb-ref-name
- jndi-name
- pass-by-reference
- res-ref-name
- resource-env-ref
- resource-env-ref-name
- resource-ref
ejb-ref
対応する J2EE XML ファイルの ejb-ref 要素に JNDI 絶対名 jndi-name をマップします。ejb-ref 要素は、EJB のホームへの参照の宣言に使用されます。
ステートフルセッション Beans またはエンティティ Beans に適用されます。
サブ要素
次の表は、ejb-ref 要素のサブ要素を示します。
   ejb-ref 要素のサブ要素
サブ要素
必要指定数
説明
1 個のみ
対応する J2EE EJB JAR ファイルの ejb-ref エントリ内の ejb-ref-name を指定する
1 個のみ
JNDI 絶対名 jndi-name を指定する
ejb-ref-name
対応する J2EE XML ファイルの ejb-ref エントリ内の ejb-ref-name を指定します。この名前は、同じ Enterprise JavaBean 内では一意にする必要があります。名前の最初に ejb/ というプレフィックスをつけることをお勧めします。
サブ要素
なし
例
<ejb-ref-name>ejb/Payroll</ejb-ref-name>
jndi-name
JNDI 絶対名 jndi-name を指定します。
すべての Enterprise JavaBean に適用されます。
サブ要素
なし
例
<jndi-name>jdbc/PointBase</jndi-name>
pass-by-reference
同じプロセス内の別の Bean に含まれるリモートインタフェースメソッドを呼び出すサーブレットまたは Enterprise JavaBean に適用させる受け渡し方法を指定します。デフォルト値は false です。
注 pass-by-reference フラグは、リモートインタフェースへの呼び出しだけに適用されます。『Enterprise JavaBeans Specification, v2.0』に定義されているように、ローカルインタフェースへの呼び出しでは、参照セマンティックによる受け渡しが使用されます。
- false (この要素が存在しない場合のデフォルト値) の場合、このアプリケーションは、『Enterprise JavaBeans Specification, v2.0』で要求されている pass-by-value セマンティックを使用する
- true の場合、このアプリケーションは pass-by-reference セマンティックを使用する
サーブレットまたは Enterprise JavaBean が、同じプロセス内の別の Bean に含まれるリモートインタフェースメソッドを呼び出すと、デフォルトの設定では、Sun ONE Application Server はすべての呼び出しパラメータをコピーして pass-by-value セマンティックを保存します。これにより呼び出しのオーバヘッドが増加し、パフォーマンスが低下します。
しかし、呼び出しメソッドがパラメータとして受け渡すオブジェクトを変更しない場合は、コピーを作成せずにオブジェクト自体を渡しても安全です。この場合は pass-by-reference の値を true に設定します。
複数の EJB モジュールを含む J2EE アプリケーション全体に pass-by-reference セマンティックを適用させるには、sun-application.xml ファイルに同じ要素を設定します。Bean レベルとアプリケーションレベルの両方で pass-by-reference を使用する場合は、アプリケーションレベルより Bean レベルが優先されます。
server.xml ファイルの詳細については、『Sun ONE Application Server 開発者ガイド』および『管理者用設定ファイルリファレンス』を参照してください。
サブ要素
なし
res-ref-name
対応する J2EE ejb-jar.xml ファイルの resource-ref エントリ内の res-ref-name を指定します。res-ref-name 要素は、リソースマネージャの接続ファクトリへの参照を指定します。名前は、java:comp/env コンテキストに関連する JNDI 名です。この名前は、同じ Enterprise JavaBean 内では一意にする必要があります。
サブ要素
なし
例
<res-ref-name>jdbc/SimpleBank</res-ref-name>
resource-env-ref
対応する J2EE ejb-jar.xml ファイルの resource-env-ref エントリに記録されている resource-env-ref-name を、server.xml ファイルの resources 要素に記録されている絶対名 jndi-name にマップします。resource-env-ref 要素には、Bean の環境で利用されるリソースに関連する管理対象オブジェクトに対する Enterprise JavaBean の参照宣言が含まれます。
エンティティ Beans、メッセージ駆動型 Beans、セッション Beans で使用されます。
サブ要素
次の表は、resource-env-ref 要素のサブ要素を示します。
   resource-env-ref 要素のサブ要素
サブ要素
必要指定数
説明
1 個のみ
対応する J2EE ejb-jar.xml ファイルの resource-env-ref エントリ内の resource-env-ref-name を指定する
1 個のみ
JNDI 絶対名 jndi-name を指定する
例
<resource-env-ref>
<resource-env-ref-name>
jms/StockQueueName
</resource-env-ref-name>
<jndi-name>jms/StockQueue</jndi-name>
</resource-env-ref>resource-env-ref-name
対応する J2EE ejb-jar.xml ファイルの resource-env-ref エントリ内の resource-ref-name を指定します。resource-env-ref-name 要素は、リソース環境への参照を指定します。この値は、EJB コードで使用される環境エントリ名です。名前は java:comp/env コンテクストに関連する JNDI 名で、同じ Enterprise JavaBean では一意にする必要があります。
サブ要素
なし
例
<resource-env-ref-name>jms/StockQueue</resource-env-ref-name>
resource-ref
対応する J2EE ejb-jar.xml ファイルの resource-ref エントリに記録されている res-ref-name を、server.XML ファイルの resources 要素に記録されている絶対名 jndi-name にマップします。resource-ref 要素には、外部リソースに対する EJB の参照宣言が含まれます。
注 JMS 接続ファクトリから得られる接続は、Sun ONE Application Server の現在のリリースでは共有できません。ejb-jar.xml ファイルの resource-ref エントリ内の res-sharing-scope 要素は、JMS 接続ファクトリでは無視されます。
エンティティ Beans、メッセージ駆動型 Beans、セッション Beans で使用されます。
サブ要素
次の表は、resource-ref 要素のサブ要素を示します。
例
<resource-ref>
<res-ref-name>jdbc/EmployeeDBName</res-ref-name>
<jndi-name>jdbc/EmployeeDB</jndi-name>
</resource-ref>メッセージング要素
ここでは、次のメッセージング関連要素について説明します。
jms-durable-subscription-name
メッセージ駆動型 Bean クラスに関連付けられた永続サブスクリプションを指定します。送信先タイプが Java Message Service Topic で、メッセージ駆動型 Bean 配備記述子のサブスクリプションの永続性が永続 (Durable) の場合にだけ適用されます。
サブ要素
なし
jms-max-messages-load
メッセージ駆動型 Bean による処理で Java Message Service セッションに一度に読み込む最大メッセージ数を指定します。デフォルト値は 1 です。
サブ要素
なし
mdb-connection-factory
メッセージ駆動型 Bean クラスに関連付けられたコネクションファクトリを指定します。キューまたはトピックのタイプは、メッセージ駆動型 Bean クラスに関連付けられた Java Message Service の送信先タイプと一致している必要があります。
サブ要素
次の表は、mdb-connection-factory 要素のサブ要素を示します。
   mdb-connection-factory 要素のサブ要素
サブ要素
必要指定数
説明
1 個のみ
JNDI 絶対名 jndi-name を指定する
0 または 1 個
リソースマネージャへのデフォルトのサインオン情報 (名前 / パスワード) を指定する
セキュリティ要素
ここでは、認証、承認、および一般的なセキュリティに関する要素について説明します。次の要素があります。
- as-context
- auth-method
- caller-propagation
- confidentiality
- default-resource-principal
- establish-trust-in-client
- establish-trust-in-target
- integrity
- ior-security-config
- name
- password
- realm
- required
- sas-context
- transport-config
as-context
クライアントの認証に使用する認証メカニズムを指定します。指定する場合は、USERNAME_PASSWORD となります。
サブ要素
次の表は、as-context 要素のサブ要素を示します。
auth-method
認証方法を指定します。サポートされている値は USERNAME_PASSWORD のみです。
サブ要素
なし
caller-propagation
伝達された呼び出し元 ID をターゲットが受け入れるかどうかを指定します。値は NONE、SUPPORTED、または REQUIRED です。
サブ要素
なし
confidentiality
プライバシー保護されたメッセージをターゲットがサポートするかどうかを指定します。値は NONE、SUPPORTED、または REQUIRED です。
サブ要素
なし
default-resource-principal
リソースマネージャへのデフォルトのサインオン情報 (名前 / パスワード) を指定します。
サブ要素
次の表は、default-resource-principal 要素のサブ要素を示します。
   default-resource-principal 要素のサブ要素
サブ要素
必要指定数
説明
1 個のみ
リソースマネージャへのサインオンに使用するデフォルトのリソース主体名を指定する
1 個のみ
デフォルトのリソース主体のパスワードを指定する
establish-trust-in-client
ターゲットがクライアントを認証できるかどうかを指定します。値は NONE、SUPPORTED、または REQUIRED です。
サブ要素
なし
establish-trust-in-target
ターゲットがクライアントに対して認証できるかどうかを指定する。値は NONE、SUPPORTED、または REQUIRED です。
サブ要素
なし
integrity
整合性が保護されたメッセージをターゲットがサポートするかどうかを指定します。値は NONE、SUPPORTED、または REQUIRED です。
サブ要素
なし
ior-security-config
入出力先の変更 (IOR) のセキュリティ情報を指定します。
サブ要素
次の表は、ior-security-config 要素のサブ要素を示します。
   ior-security-config 要素のサブ要素
サブ要素
必要指定数
説明
0 または 1 個
トランスポートのセキュリティ情報を指定する
0 または 1 個
クライアントの認証に使用する認証メカニズムを記述する。指定する場合は、USERNAME_PASSWORD になる
0 または 1 個
sas-context フィールドを記述する
name
ID を指定します。
サブ要素
なし
password
セキュリティで認証を実行するために必要なパスワードを指定します。
サブ要素
なし
realm
ユーザーを認証するレルムを指定します。
サブ要素
なし
required
指定された認証方法をクライアント認証で使用する必要があるかどうかを指定します。必要がある場合、as-context の target_requires フィールドに EstablishTrustInClient ビットが設定されます。値は true または false のいずれかです。
サブ要素
なし
sas-context
sas-context フィールドを記述します。
サブ要素
次の表は、sas-context 要素のサブ要素を示します。
   sas-context 要素のサブ要素
サブ要素
必要指定数
説明
1 個のみ
伝達された呼び出し元 ID をターゲットが受け入れるかどうかを指定する。値は NONE、SUPPORTED、または REQUIRED
transport-config
トランスポートのセキュリティ情報を指定します。
サブ要素
次の表は、transport-config 要素のサブ要素を示します。
持続性要素
ここでは、コンテナ管理による持続性 (CMP)、持続性マネージャ、および持続性ベンダーに関する要素について説明します。これらの要素に関する詳細は、「コンテナ管理による持続性の使用」を参照してください。
次の要素があります。
- cmp
- cmp-resource
- concrete-impl
- finder
- is-one-one-cmp
- mapping-properties
- method-name
- one-one-finders
- pc-class
- pm-class-generator
- pm-config
- pm-descriptor
- pm-descriptors
- pm-identifier
- pm-inuse
- pm-mapping-factory
- pm-version
- query-filter
- query-params
- query-variables
cmp
EJB1.1 および EJB2.0 Bean の コンテナ管理による持続性 (CMP) エンティティ Bean オブジェクトに関する実行時情報を記述します。これは、Bean のマッピング情報が記述されたファイルへのポインタです。
サブ要素
次の表は、cmp 要素のサブ要素を示します。
cmp-resource
EJB JAR ファイル内のコンテナ管理による持続性 (CMP) Bean を保存するために使用するデータベースを指定します。
サブ要素
次の表は、cmp-resource 要素のサブ要素を示します。
   cmp-resource 要素のサブ要素
サブ要素
必要指定数
説明
1 個のみ
JNDI 絶対名 jndi-name を指定する
0 または 1 個
リソース参照のデフォルトの実行時バインドを指定する
concrete-impl
持続性ベンダー固有の具象クラス名の場所を指定します。
サブ要素
なし
finder
メソッド名とクエリでコンテナ管理による持続性 1.1 の検索を記述します。
サブ要素
次の表は、finder 要素のサブ要素を示します。
is-one-one-cmp
コンテナ管理による持続性 1.1 のブール特性を指定します。古い記述子による CMP 1.1 の識別に使用されます。
サブ要素
なし
mapping-properties
持続性ベンダー固有のオブジェクトとリレーショナル間 (O/R) のデータベースマッピングファイルの場所を指定します。ほとんどの持続性ベンダーでは、プロジェクトという概念を使用します。プロジェクトは、関連するすべての Beans およびその依存クラスを表し、1 つの単位として配備することができます。プロジェクトに関連付けられたベンダー固有 XML ファイルが存在する場合もあります。
サブ要素
なし
method-name
クエリフィールドのメソッド名を指定します。method-name 要素には、EJB メソッドの名前またはアスタリスク (*) が含まれます。アスタリスクは、EJB のコンポーネントとホームインタフェースのすべてのメソッドを意味します。
例
<method-name>create</method-name>
<method-name>*</method-name>
サブ要素
なし
one-one-finders
コンテナ管理による持続性 (CMP) 1.1 の検索を記述します。
サブ要素
次の表は、one-one-finders 要素のサブ要素を示します。
   one-one-finders 要素のサブ要素
サブ要素
必要指定数
説明
1 つ以上必要
メソッド名とクエリでコンテナ管理持続性 (CMP) 1.1 の検索を記述する
pc-class
持続性ベンダー固有のクラスを指定します。
サブ要素
なし
pm-class-generator
使用するベンダー固有の具象クラスジェネレータを指定します。これは、そのベンダーに固有のクラス名です。
サブ要素
なし
pm-config
使用するベンダー固有のコンフィグレーションファイルを指定します。
サブ要素
なし
pm-descriptor
エンティティ Beans に関連付けられた持続性マネージャのプロパティを記述します。
サブ要素
次の表は、pm-descriptor 要素のサブ要素を示します。
pm-descriptors
持続性マネージャ記述子を記述します。特定の時間にその 1 つが使用されている必要があります。これは、基本的に、Sun ONE Application Server のプラグイン可能な持続性マネージャ API に適用されます。
サブ要素
次の表は、pm-descriptors 要素のサブ要素を示します。左側の列にはサブ要素名、中央の列には必要指定数、右側の列には要素の説明を示しています。
   pm-descriptors 要素のサブ要素
サブ要素
必要指定数
説明
1 個以上
エンティティ Beans に関連付けられた持続性マネージャのプロパティを記述する
1 個のみ
この特定の持続性マネージャを使用する必要があるかどうかを指定する
pm-identifier
持続性マネージャ実装を提供したベンダーを指定します。たとえば、Sun ONE Application Server のコンテナ管理持続性またはサードパーティベンダーなどです。
サブ要素
なし
pm-inuse
この特定の持続性マネージャを使用する必要があるかどうかを指定します。
サブ要素
次の表は、pm-inuse 要素のサブ要素を示します。
   pm-insue 要素のサブ要素
サブ要素
必要指定数
説明
1 個のみ
持続性マネージャ実装を提供したベンダーを示すデータを指定する。たとえば、Sun ONE Application Server のコンテナ管理持続性またはサードパーティベンダー
1 個のみ
使用する持続性マネージャベンダー製品のバージョンを示すデータを指定する
pm-mapping-factory
使用するベンダー固有のマッピングファクトリを指定します。これは、そのベンダーに固有のクラス名です。
サブ要素
なし
pm-version
使用する持続性マネージャベンダー製品のバージョンを指定します。
サブ要素
なし
query-filter
コンテナ管理による持続性 1.1 の検索のクエリフィルタを指定します (省略可能)。
サブ要素
なし
query-params
コンテナ管理による持続性 1.1 の検索のクエリパラメータを指定します。
サブ要素
なし
query-variables
コンテナ管理による持続性 1.1 の検索のクエリ式内の変数を指定します (省略可能)。
サブ要素
なし
プールとキャッシュの要素
この節では、キャッシュ、タイムアウト、および EJB プールに関する要素について説明します。これらの要素は、メモリ管理とパフォーマンスの調整に使用されます。詳細については、『Sun ONE Application Server Performance, Tuning, and Sizing Guide』を参照してください。
次の要素について説明します。
- bean-cache
- bean-pool
- cache-idle-timeout-in-seconds
- commit-option
- is-cache-overflow-allowed
- max-cache-size
- max-pool-size
- max-wait-time-in-millis
- pool-idle-timeout-in-seconds
- removal-timeout-in-seconds
- resize-quantity
- steady-pool-size
- victim-selection-policy
bean-cache
エンティティ Bean のキャッシュプロパティを指定します。エンティティ Beans およびステートフルセッション Beans で使用します。
サブ要素
次の表は、bean-cache 要素のサブ要素を示します。
例
<bean-cache>
<max-cache-size>100</max-cache-size>
<cache-resize-quantity>10</cache-resize-quantity>
<removal-timeout-in-seconds>3600</removal-timeout-in-seconds>
<victim-selection-policy>LRU</victim-selection-policy>
<cache-idle-timeout-in-seconds>
600
</cache-idle-timeout-in-seconds>
<removal-timeout-in-seconds>5400</removal-timeout-in-seconds>
</bean-cache>bean-pool
ステートフルセッション Beans、エンティティ Beans、メッセージ駆動型 Bean のプールのプロパティを指定します。
サブ要素
次の表は、bean-pool 要素のサブ要素を示します。
例
<bean-pool>
<steady-pool-size>10</steady-pool-size>
<resize-quantity>10</resize-quantity>
<max-pool-size>100</max-pool-size>
<pool-idle-timeout-in-seconds>600</pool-idle-timeout-in-seconds>
</bean-pool>cache-idle-timeout-in-seconds
Bean がキャッシュにアイドル状態のままでいられる最長時間を指定します (省略可能)。この時間を過ぎると、コンテナはこの Bean を非活性化できます。値に 0 を指定すると、その Beans は非活性化の対象となりません。デフォルト値は 600 です。
ステートフルセッション Beans およびエンティティ Beans に適用されます。
サブ要素
なし
commit-option
トランザクション完了時に使用するコミットオプションを指定します (省略可能)。Sun ONE Application Server での有効値は B または C で、デフォルト値は B です。
注 コミットオプション A は、Sun ONE Application Server 7 ではサポートされていません。
この要素はエンティティ Beans に適用されます。
サブ要素
なし
例
<commit-option>B</commit-option>
is-cache-overflow-allowed
この要素は廃止されたので使用できません。
max-cache-size
キャッシュに存在できる Bean の最大数を指定します (省略可能)。ゼロを指定すると、キャッシュは無制限になります。実際には、強い制限値は存在しません。max-cache-size の制限値は、キャッシュ実装にとって参考程度です。デフォルト値は 512 です。
ステートフルセッション Beans およびエンティティ Beans に適用されます。
サブ要素
なし
例
<max-cache-size>100</max-cache-size>
max-pool-size
プール内に存在できる Bean インスタンスの最大数を指定します (省略可能)。0 (メッセージ駆動型 Bean では 1) から MAX_INTEGER までの範囲で指定します。0 を指定すると、プールは無制限になります。デフォルト値は 64 です。
すべての Beans に適用されます。
サブ要素
なし
例
<max-pool-size>100</max-pool-size>
max-wait-time-in-millis
この要素は廃止されたので使用できません。
pool-idle-timeout-in-seconds
Beans インスタンスが、アイドル状態でプール内に存在できる最大時間を秒単位で指定します (省略可能)。このタイムアウト時間が過ぎると、プール内の Bean インスタンスは非活性化または削除の対象となります。この時間はサーバーが参考にします。0 を指定すると、アイドル Beans はプール内に残り続けます。デフォルト値は 600 です。
ステートレスセッション Beans、エンティティ Beans、メッセージ駆動型 Beans に適用されます。
注 ステートレスセッション Bean とメッセージ駆動型 Bean では、タイムアウト時間が過ぎると、その Bean を削除 (ガベージコレクション) できます。
サブ要素
なし
例
<pool-idle-timeout-in-seconds>600</pool-idle-timeout-in-seconds>
removal-timeout-in-seconds
Bean インスタンスが、削除前にアイドル状態でコンテナ内に存在できる最大時間 (タイムアウト) を指定します (省略可能)。0 を指定すると、コンテナは非活性化された Beans を自動削除しません。デフォルト値は 5400 です。
removal-timeout-in-seconds を cache-idle-timeout-in-seconds より短く、または同じに設定すると、Beans は非活性化される前に削除されます。
ステートフルセッション Beans だけに適用されます。
関連情報については、cache-idle-timeout-in-secondsを参照してください。
サブ要素
なし
例
<removal-timeout-in-seconds>3600</removal-timeout-in-seconds>
resize-quantity
次の Bean インスタンスの数を指定します (省略可能)。
- プールに存在する Beans が steady-pool-size より少ない状態で要求を受け取った場合に作成する Beans (作成時にプールだけに適用される)。プールに存在する Beans の数が、steady-pool-size から resize-quantity を差し引いた値より多い場合は、resize-quantity と同数の Beans が作成される
- pool-idle-timeout-in-seconds で指定した時間が経過したときに (タイムアウト)、クリーナスレッドが削除する使用されていない Beans
キャッシュでは、max-cache-size に達すると、victim-selection-policy を使って非活性化の対象とする Beans が resize-quantity と同数だけ選択される。また、cache-idle-timeout-in-seconds または cache-remove-timeout-in-seconds が経過すると、非活性化された Beans がキャッシュから削除される
プールでは、Beans の数が max-pool-size に達すると、削除の対象とする Beans が resize-quantity と同数だけ選択される。また、pool-idle-timeout-in-seconds が経過すると、Beans の数が steady-pool-size に達するまで Beans は削除される
値は 0 から MAX_INTEGER の範囲です。プールのサイズが steady-pool-size を下回ることはありません。デフォルトは 16 です。
ステートレスセッション Beans、エンティティ Beans、メッセージ駆動型 Beans に適用されます。
EJB プールでは、server.xml ファイルの pool-resize-quantity に記録される ejb-container 要素の値がデフォルト値となります。デフォルト値は 16 です。
EJB キャッシュでは、server.xml ファイルの cache-resize-quantity に記録される ejb-container 要素の値がデフォルト値となります。デフォルト値は 32 です。
メッセージ駆動型 Beans では、server.xml ファイルの pool-resize-quantity に記録される mdb-container 要素の値がデフォルト値となります。デフォルト値は 2 です。
サブ要素
なし
例
<resize-quantity>10</resize-quantity>
steady-pool-size
プール内で維持する Bean インスタンスの初期の最少数を指定します (省略可能)。デフォルト値は 32 です。
ステートレスセッション Beans およびメッセージ駆動型 Beans に適用されます。
サブ要素
なし
例
<steady-pool-size>10</steady-pool-size>
victim-selection-policy
非活性化するステートフルセッション Beans を選択する方法を指定します (省略可能)。可能な値には、先入れ先出し (FIFO)、最近もっとも使われていないもの (LRU)、最近使われていないもの (NRU) があります。デフォルト値は NRU (実際には pseudo-LRU) です。
注 ユーザー独自の削除対象選択アルゴリズムを組み込むことはできません。
削除対象は、通常、非活性化されてバックアップストア (一般的にはファイルシステムまたはデータベース) に置かれます。このストアの内容は起動時に削除されます。また、removal-timeout-in-seconds が経過すると、定期的なバックグラウンドプロセスによってアイドルエントリが削除されます。バックアップストアはバックグラウンドスレッド (またはスイーパースレッド) によって管理され、不要なエントリは削除されます。
ステートフルセッション Beans だけに適用されます。
サブ要素
なし
例
<victim-selection-policy>LRU</victim-selection-policy>
クラス要素
ここでは、クラスに関連する要素について説明します。次の要素があります。
gen-classes
Bean で生成されるすべてのクラス名を指定します。
注 これは、配備時または再配備時にサーバーによって自動的に生成されます。開発者が指定したり、配備後に変更したりする必要はありません。
サブ要素
次の表は、gen-classes 要素のサブ要素を示します。
local-home-impl
生成された EJBLocalHome impl クラスの完全修飾クラス名を指定します。
注 これは、配備時または再配備時にサーバーによって自動的に生成されます。開発者が指定したり、配備後に変更したりする必要はありません。
サブ要素
なし
local-impl
生成された EJBLocalObject impl クラスの完全修飾クラス名を指定します。
注 これは、配備時または再配備時にサーバーによって自動的に生成されます。開発者が指定したり、配備後に変更したりする必要はありません。
サブ要素
なし
remote-home-impl
生成された EJBHome impl クラスの完全修飾クラス名を指定します。
注 これは、配備時または再配備時にサーバーによって自動的に生成されます。開発者が指定したり、配備後に変更したりする必要はありません。
サブ要素
なし
remote-impl
生成された EJBObject impl クラスの完全修飾クラス名を指定します。
注 これは、配備時または再配備時にサーバーによって自動的に生成されます。開発者が指定したり、配備後に変更したりする必要はありません。
サブ要素
なし
EJB XML ファイルの例
この節では、次のファイルの例を示します。
Enterprise JavaBean に関連する要素については、「sun-ejb-jar.xml ファイルの要素」および『Sun ONE Application Server 開発者ガイド』を参照してください。
ejb-jar.xml ファイルの例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN'
'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>
<ejb-jar>
<description>no description</description>
<display-name>CustomerJAR</display-name>
<enterprise-beans>
<entity>
<description>no description</description>
<display-name>CustomerEJB</display-name>
<ejb-name>CustomerEJB</ejb-name>
<home>samples.SimpleBankBMP.ejb.CustomerHome</home>
<remote>samples.SimpleBankBMP.ejb.Customer</remote>
<ejb-class>samples.SimpleBankBMP.ejb.CustomerEJB</ejb-class>
<persistence-type>Bean</persistence-type>
<prim-key-class>java.lang.String</prim-key-class>
<reentrant>False</reentrant>
<security-identity>
<description></description>
<use-caller-identity></use-caller-identity>
</security-identity>
<resource-ref>
<res-ref-name>jdbc/SimpleBank</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</entity>
</enterprise-beans
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>CustomerEJB</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>NotSupported</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>sun-ejb-jar.xml ファイルの例
これらの要素に関する詳細は、「sun-ejb-jar.xml ファイルの要素」を参照してください。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Sun ONE Application Server 7.0 EJB 2.0//EN'
'http://www.sun.com/software/sunone/appserver/dtds/sun-ejb-jar_2_0-0.dtd'>
<sun-ejb-jar>
<display-name>First Module</display-name>
<enterprise-beans>
<ejb>
<ejb-name>CustomerEJB</ejb-name>
<jndi-name>customer</jndi-name>
<resource-ref>
<res-ref-name>jdbc/SimpleBank</res-ref-name>
' <jndi-name>jdbc/PointBase</jndi-name>
</resource-ref>
<is-read-only-bean>false</is-read-only-bean>
<commit-option>B</commit-option>
<bean-pool>
<steady-pool-size>10</steady-pool-size>
<resize-quantity>10</resize-quantity>
<max-pool-size>100</max-pool-size>
<pool-idle-timeout-in-seconds>600</pool-idle-timeout-in-seconds>
</bean-pool>
<bean-cache>
<max-cache-size>100</max-cache-size>
<resize-quantity>10</resize-quantity>
<removal-timeout-in-seconds>3600</removal-timeout-in-seconds>
<victim-selection-policy>LRU</victim-selection-policy>
</bean-cache>
</ejb>
</enterprise-beans>
</sun-ejb-jar>