Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 基本・開発編(EJBコンテナ)


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

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

〈この項の構成〉

(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サーバ単位に定義します。キーの詳細については,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「2.2.3 usrconf.properties(J2EEサーバ用ユーザプロパティファイル)」を参照してください。

(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の仕様上,呼び出して使用することはできません。呼び出さないようにしてください。