- ベストアンサー
ひとつのインターフェースで複数のEJBクラスを参照する
- インターフェースが同じなら複数のEJBクラスを参照する構成は可能か
- Beanごとにインタフェースが違う場合はこの構成はむりか
- 共通RemoteI/F側にBean1~Nのインタフェースを定義し、使わないインターフェースの実装も行う必要がある
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
> 仮にBeanごとにインタフェースが違うならこの構成はむりなのでしょうか? 「ひとつのインターフェースで複数のEJBクラスを参照する」の続きと言うことですが、Beanごとのインタフェースが違うんなら、Remote や Homeインタフェースを共有するというのは、EJB設計上問題があると思うのですが。。。 > 共通RemoteI/F側にBean1~Nのインタフェースの定義をしてさらに > Bean1~Nに使わないインターフェースの実装も行わないとだめだということですよね.... . そういうことになりますね。。。 このような状況に対応する方法としては、以下の2パターンがあると思います。 1.EJBを呼び出すメソッドを子サーブレットに実装させる 2.個別のEJBを呼び出すEJBを用意する プロキシクラスとか、アダプタクラスとか呼ばれる呼び出し元と 呼び出し先の間のブリッジになるクラスを使う 1の方は、親サーブレットに callEJB() といったメソッドを用意し、子サーブレットで、EJB呼び出しを実装するというものです。 最初の質問で、子サーブレットは独自の処理を実装するとなっていましたが、 EJBクラスのI/Fが別々ということであれば、それは既に独自の処理となると思うので、 EJB呼び出し用のメソッドを子サーブレットごとに実装していきます。 2の方では、ブリッジになるEJBを用意し、サーブレットからはこのEJBに呼び出したい EJBの情報を渡します。それで、このブリッジになるEJB内で、受け取った情報に 合わせたEJBを呼び出して結果を返却します。 2の方は、フレームワークを作成するときなどに一般に使われる方法だと思います。 特に、ブリッジに渡す情報を外部ファイル化したり、パラメータ化したりすると 新しいEJBの追加時の修正個所が局所化できると思います。 ただし2の場合、単純な場合でも、少なくとも2回EJB呼び出しが発生するので、 呼び出しのオーバーヘッドが気になるところですが。。。 # EJB2.0 からは、LocalHome、Local インタフェースが定義できるので、 # それらを使うことも考慮すべきですね
お礼
お返事ありがとうございました。 いろいろと考えたのですが、2の方法で考えてみようかと 思っています。EJBを2回呼び出さないといけないので 処理時間が気になりますが、それは実際に作ってみて検証を してみようと思っています。