Interstage V3.xと本バージョン・レベルでの動作の違い
EJBアプリケーション内で以下の機能を使用した場合、Interstage V3.xで動作させた場合と本バージョン・レベルで動作させた場合と処理結果が異なります。
機能 | 本バージョン・レベルでの動作 | Interstage V3.xの動作 |
---|---|---|
リエントラント制御 | [Session Beanの場合] | [Session Beanの場合] |
[Entity Beanの場合] | [Entity Beanの場合] | |
Session BeanのPrimaryKey関連メソッド | Session BeanのEJBObject.getPrimaryKey()、EJBHome.remove(Object primaryKey)を実行すると以下の例外がthrowされる。
| Session BeanのEJBObject.getPrimaryKey()、EJBHome.remove(Object primaryKey)を実行しても正常に動作する。 |
Session Bean内で発生したシステム例外処理 | Sessionオブジェクトは破棄される。 | Sessionオブジェクトは破棄されない。 |
Entity Bean内で発生したシステム例外処理 | Entity Beanのインスタンスは破棄される。 | Entity Beanのインスタンスは破棄されない。 |
setRollbackOnly()、getRollbackOnly()メソッド | トランザクション管理種別が「Bean」の場合でインスタンスがトランザクションに関連付けられていないときにEntityContextインタフェース、またはSessionContextインタフェースのsetRollbackOnly()やgetRollbackOnlyを実行すると IIllegalStateExceptionが発生する。 | EntityContextインタフェースまたはSessionContextインタフェースのsetRollbackOnly()やgetRollbackOnlyは、どのトランザクション属性でも正常に動作する。 |
コンテナのリソース接続者管理 | リソース接続者に「Container」が指定された場合、Interstage管理コンソールまたはisj2eeadminコマンドで定義したデータソースのユーザIDとパスワードがリソース接続時に使用される。 | リソース接続者に指定された値にかかわらず、アプリケーションにユーザID、パスワードが指定された場合はそのユーザID、パスワードがリソース接続時に使用される。アプリケーションにユーザID、パスワードが指定されていない場合はDBアクセス環境定義に設定されているユーザIDとパスワードがリソース接続時に使用される。 |
STATEFUL Session Beanのcreate()、remove()メソッド | [create()の場合] | [create()の場合] |
[remove()の場合] | [remove()の場合] | |
Session BeanのMandatoryトランザクション属性 | トランザクション属性にMandatoryが指定された場合、トランザクションが開始されていない状態でSession Beanが呼び出されると、TransactionRequiredExceptionがthrowされる。 | トランザクション属性にMandatoryが指定された場合、トランザクションが開始されていない状態でSession Beanが呼び出されても例外は発生せず、正常に動作する。 |
UserTransactionのlookup | 「12.6.3 Enterprise Beanクラスのメソッドが実行可能な操作」に記述されているUserTransactionをlookupできないメソッドでUserTransactionをlookupした場合、java.lang.IllegalStateExceptionが発生する。 | すべてのメソッドでUserTransactionをlookupすることが可能。 |
remove(PrimaryKey) | [Entity Beanの場合] | [Entity Beanの場合] |
Entity Bean Homeインタフェースのremove(primarykey)メソッド | remove(primarykey)メソッドで、primarykeyに該当するレコード(インスタンス)が存在しない場合、RemoteException(NoSuchObjectExcetion)がthrowされる。 | remove(primarykey)メソッドで、primarykeyに該当するレコード(インスタンス)が存在しない場合、RemoveException がthrowされる。 |
対処方法
「Interstage V3.xと本バージョン・レベルでの動作の違い」に記載されている機能を使用している場合、以下のどちらかの対処が必要です。なお、該当する機能を使用していない場合は、対処は不要です。
「Interstage V3.xと本バージョン・レベルでの動作の違い」に注意して、EJBアプリケーションを修正してください。
EJBアプリケーションの修正ができない場合は、EJBアプリケーションの処理モードを変更します。
Interstage管理コンソールのワークユニット設定に以下の定義をしてください。
Java VM オプション(Java Command Option)
-DFJV3MODE=処理モード
yes:Interstage V3の動作
no :本バージョンの動作
注意
以下の場合には本バージョンの動作をします。
処理モードを設定しない場合
処理モードに上記に示す設定値以外を設定した場合