Cosminexus 機能解説

[目次][用語][索引][前へ][次へ]

5.13.3 Stateful Session Bean実装時の注意事項

Stateful Session Beanを実装するときの注意事項を示します。

<この項の構成>
(1) removeメソッドまたは@Removeアノテーションを指定したメソッドによるEJBインスタンスの削除とリファレンスの解放
(2) Beanクラスの共有についての注意
(3) SessionSynchronizationのインスタンスの破棄についての注意
(4) ベーシックモードでのSessionSynchronizationのメソッド呼び出しについての注意
(5) setSessionContextメソッドでのjavax.transaction.UserTransactionのbeginメソッドの呼び出しについて
(6) beforeCompletionメソッドからのEnterprise Beanの呼び出しについて
(7) afterCompletionメソッドからのEnterprise Beanの呼び出しについて

(1) removeメソッドまたは@Removeアノテーションを指定したメソッドによるEJBインスタンスの削除とリファレンスの解放

(2) Beanクラスの共有についての注意

同じSession Beanを同じJ2EEアプリケーション内でStateful Session Bean,およびStateless Session Beanとして同時に利用しないでください。

(3) SessionSynchronizationのインスタンスの破棄についての注意

SessionSynchronizationのbeforeCompletionメソッドおよびafterCompletionメソッドでシステム例外が発生した場合,EJBコンテナでは該当するSession Beanのインスタンスを破棄しません。

(4) ベーシックモードでのSessionSynchronizationのメソッド呼び出しについての注意

ベーシックモードで,クライアントでトランザクション開始後にSessionSynchronizationのStateful Session Bean(トランザクション属性はRequiredまたはMandatory)を呼び出して,afterBeginメソッドまたはsetRollbackOnlyメソッドを呼び出すと,クライアントでのコミット時にbeforeCompletionメソッドが呼び出されません。1.4モードのときは,beforeCompletionメソッドが呼び出されます。

(5) setSessionContextメソッドでのjavax.transaction.UserTransactionのbeginメソッドの呼び出しについて

Stateful Session BeanのsetSessionContextメソッドでは,javax.transaction.UserTransactionのbeginメソッドを呼び出せる場合がありますが,EJBの仕様上,呼び出して使用することはできません。呼び出さないようにしてください。

(6) beforeCompletionメソッドからのEnterprise Beanの呼び出しについて

J2EEサーバモードの動作モードとしてベーシックモードを使用している場合,Stateful Session BeanのbeforeCompletionメソッドからほかのEnterprise Beanは呼び出せません。ほかのEnterprise Beanを呼び出した場合,java.rmi.RemoteException例外が発生します。

(7) afterCompletionメソッドからのEnterprise Beanの呼び出しについて

Stateful Session BeanのafterCompletionメソッドからほかのEnterprise Beanを呼び出した場合,J2EEサーバモードの動作モードによって次の動作をします。

EJBの仕様上,Stateful Session BeanのafterCompletionメソッドからほかのEnterprise Beanを呼び出せないので,呼び出さないようにしてください。