Cosminexus 機能解説

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

5.13.2 Stateless Session Bean実装時の注意事項

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

<この項の構成>
(1) removeメソッドによるリファレンスの解放
(2) ejbCreateメソッドおよび@PostConstructアノテーションを指定したメソッドでのリソースマネジャへのアクセスについて
(3) Beanクラスの共有についての注意
(4) ejbRemoveメソッドまたは@PreDestroyアノテーションを指定したメソッドでのjavax.transaction.UserTransactionのbeginメソッドの呼び出しについて

(1) removeメソッドによるリファレンスの解放

ホームインタフェースを使用してStateless Session Beanを呼び出す場合,ホームインタフェースのcreateメソッドを呼び出してリファレンスを取得しますが,Session Beanの呼び出しが完了したあとに,必ずremoveメソッドを呼び出してリファレンスを解放してください。リファレンスを解放しない場合,J2EEサーバ上のメモリを消費したままの状態になります。

また,removeメソッド呼び出しを不要にするオプションを指定することで,Stateless Session BeanのEJBオブジェクトに対する,removeメソッドの呼び出しが不要になります。このオプションを有効にすると,removeメソッド呼び出しのあとに,ビジネスメソッドの呼び出しができます。

このオプションを無効にしている場合は,removeメソッドを呼び出す必要があります。また,removeメソッド呼び出しのあとにビジネスメソッドを呼び出した場合,java.rmi.NoSuchObjectException例外が呼び出し元に返ります。

removeメソッド呼び出しを不要にするオプションは,usrconf.propertiesのejbserver.rmi.stateless.unique_id.enabledキーに指定し,J2EEサーバ単位に定義します。キーの詳細については,マニュアル「Cosminexus リファレンス 定義編」を参照してください。また,構成ソフトウェアにCosminexus TPBrokerを含まないuCosminexus Developer Standardでは,プロパティの設定に関係なく常にこのオプションは有効になります。

(2) ejbCreateメソッドおよび@PostConstructアノテーションを指定したメソッドでのリソースマネジャへのアクセスについて

EJB仕様では,ejbCreateメソッドまたは@PostConstructアノテーションを指定したメソッドで,リソースマネジャへアクセスすることは許されていません。

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

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

(4) ejbRemoveメソッドまたは@PreDestroyアノテーションを指定したメソッドでのjavax.transaction.UserTransactionのbeginメソッドの呼び出しについて

Stateless Session BeanのejbRemoveメソッドまたは@PreDestroyアノテーションを指定したメソッドでは,javax.transaction.UserTransactionのbeginメソッドを呼び出せる場合がありますが,EJBの仕様上,呼び出して使用することはできません。呼び出さないようにしてください。