EJB コンテナーのシステム・プロパティー
管理コンソールからアクセス可能な設定値以外に、 コマンド行スクリプトを使用して EJB システム・プロパティーを設定することができます。
- com.ibm.websphere.ejbcontainer.allowEarlyInsert
- com.ibm.websphere.ejbcontainer.checkEJBApplicationConfiguration
- com.ibm.websphere.ejbcontainer.declaredUncheckedAreSystemExceptions
- com.ibm.websphere.ejbcontainer.defaultSessionAccessTimeout
- com.ibm.websphere.ejbcontainer.defaultStatefulSessionTimeout
- com.ibm.websphere.ejbcontainer.EE5Compatibility
- com.ibm.websphere.ejbcontainer.EE6Compatibility
- com.ibm.websphere.ejbcontainer.excludeRootExceptionOnRollback
- com.ibm.websphere.ejbcontainer.limitSetRollbackOnlyBehaviorToInstanceFor
- com.ibm.websphere.ejbcontainer.poolSize
com.ibm.websphere.ejbcontainer.allowEarlyInsert
このプロパティーは、コンテナー管理パーシスタンス (CMP) 1.1 Bean にのみ適用できます。 デフォルトでは、EJB コンテナーは、メソッド ejbPostCreate(...) が呼び出された後に限り、 データベース内でエンティティー Bean 表現を作成します。

一部の アプリケーションでは、メソッド ejbCreate(...) を使用して、データベース内でエンティティー Bean を作成している場合があります。 このような要件がある場合、JVM プロパティー com.ibm.websphere.ejbcontainer.allowEarlyInsert を true に 設定することで、デフォルトの動作をオーバーライドします。
com.ibm.websphere.ejbcontainer.checkEJBApplicationConfiguration
アプリケーションが Java™ Platform, Enterprise Edition (Java EE) 仕様に一致するように、コンテナーが追加アプリケーション構成検証を実行することを示す、サーバー全体の設定を指定します。

このプロパティーは、アプリケーション開発時に使用するすることを目的としており、予期しない動作を引き起こす 可能性がある不適切な構成を特定するのに役立ちます。例えば、インターフェースへの javax.ejb.Asynchronous アノテーションの 適用はこの仕様ではサポートされず、通常は無視されます。このプロパティーを使用可能にすると、エラーがログに記録され、Bean の処理時に例外が発生します。この検証の失敗により、メソッドが非同期で機能しない理由がわかるので、開発時のこの失敗は役に立ちます。
このプロパティーが使用可能になっていると、構成の追加検証が実行され、その結果、構成について複数の警告およびエラーがログに記録される可能性があります。通常、この追加検証は、実行時に余分なオーバーヘッドが発生する シナリオ用であり、実動サーバー上の安定したアプリケーションには不要です。仕様からのわずかな逸脱の場合は、 警告のみがログに記録されます。より重大な問題の場合は、エラーが記録され、 このエラーが修正されるまでアプリケーションを実行することはできません。


com.ibm.websphere.ejbcontainer.declaredUncheckedAreSystemExceptions
このプロパティーを使用すると、EJB メソッドの throws 節で宣言された 例外をアプリケーション例外として扱うか、またはシステム実行時例外として 扱うかを指示できます。 このプロパティーを true に設定すると、これらの例外は システム実行時例外のように扱われ、これにより EJBException がクライアント・サイドで 発行されます。
このプロパティーを指定しないか、あるいは false に設定すると、EJB メソッドの throws 節で宣言された例外はアプリケーション例外として扱われます。
このプロパティーのデフォルト値は false です。
com.ibm.websphere.ejbcontainer.defaultSessionAccessTimeout
このプロパティーにより、サーバー上のすべてのセッション Bean に対してデフォルトのセッションの並行アクセス・タイムアウト値を指定できます。 値はミリ秒単位で指定します。
セッションの並行性を使用不可または使用可能にする long データ型の値を指定します。
- 0 値はセッションの並行性を使用不可にします (待機なし)。
- 正の long 値 (1、2、3 など) は、セッションの並行性を使用可能にし、タイムアウト値を指定したミリ秒に設定します。
このプロパティーが設定された場合、指定されたセッション Bean の並行アクセス・タイムアウトは、デフォルト値 -1 (永続的に待機) の代わりにサーバー全体の設定値を使用します。 これは、ステートフルと singleton の両方のセッション Bean に適用されます。 個々のセッション Bean レベルでは、タイムアウトは、Bean クラスまたはメソッドで @AccessTimeout アノテーションを使用するか、あるいは access-timeout デプロイメント記述子エレメントを使用してオーバーライドできます。
com.ibm.websphere.ejbcontainer.defaultStatefulSessionTimeout
ステートフル・セッション Bean のサーバー全体のタイムアウトを 指定します。これにより、ステートフル・セッション Bean がサーバーによって保持 される期間を示します。

これはシステム・プロパティー であり、server.xml ファイルに直接追加することも、管理コンソールを使用して汎用 JVM 引数と して追加することもできます。
このプロパティーは、分単位で指定されます (この単位のみ有効)。 デフォルト値は 10 分です。 ゼロの値は、サーバーがデフォルト値 10 分を使用することを示します。 負の値は無効です。 ゼロ以上の値が有効となります。無効値を指定すると、警告が SystemOut に 発行され、デフォルト値が使用されます。
ステートフル・セッション Bean のタイムアウト期間は、 アノテーションまたは xml を使用して Bean ごと に指定できます。 ある特定の Bean に対してタイムアウト期間を明示的に指定した場合は、 この指定があらゆるサーバー全体のタイムアウト設定値よりも優先されます。
ある特定の Bean に対して Bean 固有のタイムアウト期間が 存在しない場合、サーバー全体のタイムアウト設定がその Bean に適用されます。
ある特定の Bean に対して Bean 固有のタイムアウト期間が 存在せず、サーバー全体のタイムアウト設定も存在しない場合は、 デフォルトのタイムアウト設定がその Bean に適用されます。
com.ibm.websphere.ejbcontainer.EE5Compatibility
EJB コンテナーが Java Enterprise Edition (Java EE) 5.0 仕様と整合するデフォルトの動作を提供することを示す、 サーバー全体の設定を指定します。
これはシステム・プロパティーであり、server.xml ファイルに直接追加することも、管理コンソールを使用して汎用 JVM 引数として追加することもできます。
Java EE 仕様では、EJB プログラミング・ モデルへの改良が行われ、その結果、いくつかのデフォルト動作にわずかな変更が 加えられました。一般的には、これらの変更によってさらに直感的に 理解しやすい、あるいは信頼性の高い動作となります。しかし、1 つ以上の Java EE 5.0 動作に 依存して作成されたアプリケーションがある場合、このシステム・プロパティーを設定して、EJB コンテナーを Java EE 5.0 の デフォルト動作に戻すことができます。
このプロパティーを true に設定すると、以下の動作がオーバーライドされます。
- @ApplicationException アノテーションは継承されません。Java EE 6.0 仕様 から、@ApplicationException アノテーションのデフォルト動作は変更され、このアノテーションが サブクラスの例外クラスによって継承されるようになりました。 このシステム・プロパティーを指定すると、@ApplicationException アノテーションは、 サブクラスの例外クラスによって継承されません。このプロパティーを指定しない場合は、@ApplicationException 宣言を 変更して 'inherited=false' を指定するようにすることができます。
- ステートフル・セッション Bean への同時アクセスが禁止されるため、 例外 javax.ejb.ConcurrentAccessException が発生します。Java EE 6.0 仕様から、 ステートフル・セッションの並行性のデフォルト動作は、同時アクセスを許可するように変更されています。 ただし、各同時要求はコンテナーによってシリアライズされ、Bean インスタンスへのアクセスは、 このインスタンスのロックが取得されるまで無期限にブロックされます。 このシステム・プロパティーを指定すると、明示的なアクセス・タイムアウト値が 指定されていないすべてのステートフル・セッション Bean は、デフォルトのアクセス・ タイムアウト値 0 (Java EE 5.0 のデフォルト) を 使用することになります。 代わりに、ステートフル・セッション Bean を変更して、アクセス・タイムアウト値 0 を定義することもできます。
- Java 型 Class、 および Enum のサブクラスは、単純な環境エントリーではなく、リソース環境参照として扱われます。 Java EE 6.0 仕様から、Java 型 Class、 および Enum のサブクラスは、サポートされる一連の単純な環境エントリーの型に追加されています。 旧バージョンの Java EE では、 これらの型はリソース環境参照として扱われており、ibm-ejb-jar-bnd.xml ファイル または ibm-web-bnd.xml ファイル内でバインディングが必要でした。これらのデータ型が 単純な環境エントリーとしてサポートされるようになった現在では、プラットフォーム固有のバインディングは 不要になりました。代わりに、デプロイメント記述子に値を直接指定できます。 このシステム・プロパティーを指定すると、Java 型 Class、 または Enum のサブクラスの javax.annotation.Resource アノテーションを使用する アプリケーションはリソース環境参照として扱われ、参照される値は、バインディング・ファイル情報を 使用して取得されます。 アプリケーションのインストールはこのプロパティーによる影響を受けないため、 インストール時にバインディング情報は入力されません。代わりに、バインディング・ファイルにバインディング情報を 手動で入力してください。
com.ibm.websphere.ejbcontainer.EE6Compatibility
EJB コンテナーが Java Enterprise Edition (Java EE) 6.0 仕様と整合するデフォルトの動作を提供することを示す、 サーバー全体の設定を指定します。
これはシステム・プロパティーであり、server.xml ファイルに直接追加することも、管理コンソールを使用して汎用 JVM 引数として追加することもできます。
Java EE 仕様では、EJB プログラミング・ モデルへの改良が行われ、その結果、いくつかのデフォルト動作にわずかな変更が 加えられました。一般的には、これらの変更によってさらに直感的に 理解しやすい、あるいは信頼性の高い動作となります。しかし、1 つ以上の Java EE 6.0 動作に 依存して作成されたアプリケーションがある場合、このシステム・プロパティーを設定して、EJB コンテナーを Java EE 6.0 のデフォルト動作に戻すことができます。
このプロパティーを true に設定すると、Bean クラスおよびその他のビジネス・インターフェースの指定時に @Local アノテーションおよび @Remote アノテーションが空値で指定されている場合でも、アノテーションは無視されないようになります。このプロパティーが指定されていないときに、Bean クラスでこれらのアノテーションが指定された場合、アノテーションが原因で、implements 節のインターフェースはローカルまたはリモートのビジネス・インターフェースと見なされます。ただし、以下の場合を除きます。
- ejb-jar.xml ファイルに、<business-local> インターフェース、<business-remote> インターフェース、または <local-bean> インターフェースが指定されている。
- Bean クラスで、@LocalBean アノテーションが指定されている。
- implements 節のインターフェース・クラスで、@Local アノテーションまたは @Remote アノテーションが空値で指定されている。
このプロパティーが指定されている場合、上記のいずれかの指定が使用されていても、implements 節の単一のインターフェースは、やはりローカルまたはリモートのビジネス・インターフェースと見なされます。このプロパティーを設定する代わりに、空値の @Local または @Remote アノテーションを除去し、別のいずれかのオプションを使用することができます。
com.ibm.websphere.ejbcontainer.excludeRootExceptionOnRollback
デフォルトでは、 EJB コンテナーは、トランザクション・ロールバック中に発生する例外の根本原因を設定します。このプロパティーが true に設定されていると、 EJB コンテナーは根本原因を設定しません。これは、アプリケーションが原因の解明を期待していない場合、 または、アプリケーションが例外をログに記録していて、現在多くのデータをログに記録している場合に有用です。
com.ibm.websphere.ejbcontainer.extendSetRollbackOnlyBehaviorToInstanceFor
このプロパティーにより、ユーザーは、EJB 3.x モジュール内の EJB が EJB 3.0 以前の setRollbackOnly の 動作をする必要があるアプリケーション名を指定できます。
EJB 3.0 以前の setRollbackOnly 動作については、WebSphere「バージョン固有の」setRollbackOnly 動作に合わせたアプリケーションの変更で説明しています。
com.ibm.websphere.ejbcontainer.limitSetRollbackOnlyBehaviorToInstanceFor
このプロパティーにより、ユーザーは、EJB 3.x モジュール内の EJB が EJB 3.x の setRollbackOnly の動作を する必要があるアプリケーション名を指定できます。
EJB 3.x の setRollbackOnly 動作に ついては、WebSphere「バージョン固有の」setRollbackOnly 動作に合わせたアプリケーションの変更で説明されています。
com.ibm.websphere.ejbcontainer.poolSize
指定された Bean タイプのプール・サイズを指定します。 このプロパティーは、ステートレス Bean、 メッセージ駆動型 Bean およびエンティティー Bean に適用されます。 デフォルト値を指定しなければ、コンテナーのデフォルト値の 50 および 500 が使用されます。
beantype=[H]min,[H]max [:beantype=[H]min,[H]max...]
beantype エレメント は、Bean の Java EE 名です。 アプリケーション名、# 文字、モジュール名、# 文字、および Bean の名前 (Bean の デプロイメント記述子の <ejb-name> フィールドに割り当てられるストリング) を 連結することによって形成されます。min および max エレメントは、 その Bean タイプの最小プール・サイズおよび最大プール・サイズです。直前のプロトタイプに示されている大括弧は指定しないでください。これらの括弧は、最初の Bean タイプの後に指定できるオプションの追加 Bean タイプを示します。 Bean タイプの指定はそれぞれ、コロン (:) で区切ります。
*=30,100
SMApp#PerfModule#TunerBean=54, :SMApp#SMModule#TypeBean=100,200
ストリング内では、Bean タイプを任意の順序で指定できます。
max 値の前に文字 H を直接挿入して、構成済み EJB の最大プール・サイズをハード制限として指定することができます。H 文字がない場合、最大値はプール可能な EJB インスタンスの数を示し、作成または使用できる EJB インスタンス数は制限されません。 max 値の前に文字 H を挿入した場合はハード制限を示し、制限値に達 したときに EJB コンテナーはインスタンスがさらに作成されないようにします。そのため、インスタンスが有効になるまで、あるいは、トランザクションがタイムアウトになるまで、次のスレッドは待機する必要があります。
min 値の前に文字 H を直接挿入して、構成済み EJB の最小プール・サイズをハード制限 として指定することができます。 文字 H がない場合、最小値は、EJB タイプが実際に使用されていないときにプール内で維持される EJB インスタンスの数を示しますが、アプリケーションの起動時にプールをプリロードすることはありません。 通常、アプリケーションが同時に最小数の EJB インスタンスにアクセスしない限り、最小プール・サイズには達しません。 min 値の前に文字 H を挿入した場合はハード制限を示し、アプリケーションの起動時に、EJB コンテナーが最小数の EJB インスタンスでプールをプリロードします。
SMApp#SMModule#TypeBean=100,H200アプリケーションの起動時に、EJB コンテナーが最小数 100 の EJB インスタンスでプールをプリロードするように設定する場合は、以下のように入力してください。
SMApp#SMModule#TypeBean=H100,200
