Interstage Application Server 移行ガイド |
目次
索引
![]() ![]() |
第6章 Interstage Application Server V3以前からの移行 | > 6.3 EJBアプリケーションの移行 |
EJBアプリケーション内で以下の機能を使用した場合、Interstage V3で動作させた場合とInterstage V7で動作させた場合と処理結果が異なります。このため、以下の機能を使用している場合は、EJBアプリケーションを修正してください。
EJBアプリケーションの修正ができない場合は、EJBアプリケーションの処理モードを設定し、どちらのバージョンで動作させるかの切替えを行います。
機能 |
Interstage V7での動作 |
Interstage V3の動作 |
リエントラント制御 |
[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"が指定された場合、DBアクセス環境定義またはInterstage管理コンソールに設定されているユーザIDとパスワードがリソース接続時に使用される。リソース接続者に"Application"が指定された場合、アプリケーションにユーザID、パスワードが指定された場合はそのユーザ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 |
“J2EE ユーザーズガイド"の"Enterprise Beanクラスの作成”の"Enterprise Beanクラスのメソッドが実行可能な操作"に記述されているUserTransactionをlookupできないメソッドでUserTransactionをlookupした場合、java.lang.IllegalStateExceptionが発生する。 |
すべてのメソッドでUserTransactionをlookupすることが可能。 |
remove(PrimaryKey) |
[Entity Beanの場合]Home.remove(primarykey)メソッドで、primarykeyに該当するレコード(インスタンス)が存在 しない場合、java.rmi.NoSuchObjectExcetionをthrowする。 |
[Entity Beanの場合]Home.remove(primarykey)メソッドで、primarykeyに該当するレコード(インスタンス)が存在 しない場合、javax.ejb.RemoveExceptionをthrowする。 |
Entity Bean Homeインタフェースのremove(primarykey)メソッド |
remove(primarykey)メソッドで、primarykeyに該当するレコード(インスタンス)が存在しない場合、RemoteException(NoSuchObjectExcetion)がthrowされる。 |
remove(primarykey)メソッドで、primarykeyに該当するレコード(インスタンス)が存在しない場合、RemoveException がthrowされる。 |
処理モードの変更方法について説明します。
処理モードを変更するには以下の環境設定が必要です。
項目 |
値 |
Java VM オプション(Java Command Option) |
-DFJV3MODE=処理モード |
処理モードには以下を設定してください。
設定値 |
動作 |
yes |
Interstage V3の動作 |
no |
Interstage V7の動作 |
以下の場合にはInterstage V7の動作をします。
高速呼出し機能を使用するときに処理モードの設定値に“yes”を設定した場合は、EJBオブジェクトの共用が有効にならないので、指定しないでください。
旧バージョンにおいて、トランザクション管理種別に“Container”が指定されていてトランザクション属性が設定されていないEJBアプリケーションは、運用することができませんでした。
V7では、コンテナが自動的に“Required”が指定されたものとしてトランザクションの制御を行います。
目次
索引
![]() ![]() |