「ひとつのインターフェースで複数のEJBクラスを参照する」の続き
こんにちは、k-makotoと申します。
インターフェースが同じなら↓のような構成は可能でしょうか?
「ひとつのインターフェースで複数のEJBクラスを参照する」の投稿の
続きなのですが、
仮にBeanごとにインタフェースが違うならこの構成はむりなのでしょうか?
子サーブレット1 Bean1
子サーブレット2---共通HomeI/F、共通HomeI/F-----Bean2
子サーブレット3 Bean3
子サーブレットN BeanN
Bean1の機能
データベースの検索 Data_Search()
検索結果をCSVファイルで取得する Get_Csv()
Bean2の機能
テーブルの更新 Data_Update()
テーブルの新規作成 Data_New()
BeanNの機能
........
のような場合だったら共通RemoteI/F側にBean1~Nのインタフェースの定義をしてさらに
Bean1~Nに使わないインターフェースの実装も行わないとだめだということですよね.... .
No.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回呼び出さないといけないので
処理時間が気になりますが、それは実際に作ってみて検証を
してみようと思っています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- ネットワーク プロトコルの階層化とインターフェースとの違い 2 2022/07/26 02:38
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- Java javaのクラスの分け方について質問です。 APIの内部用と外部用でクラスを分けたいのですがインター 2 2022/04/26 16:06
- HTML・CSS HTMLタグのあるCSVファイルを利用する方法 4 2023/03/19 14:41
- 数学 特定の座標点を通る回帰を行う方法について。 2 2022/10/10 10:27
- HTML・CSS Google検索も終わりですか? グーグル、検索エンジンに対話型AI搭載へ 2 2023/04/08 11:50
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- システム 自社の外部接続システムと商用の外部接続サービスについて 1 2022/12/17 00:13
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
interfaceとabstract
-
継承後のメソッドでコントロー...
-
c++でのヘッダーファイルの循環...
-
WPF C# PointToClient
-
【C#】クラスのコンストラクタ...
-
Ftpでの帯域制限の設定方法につ...
-
「ラッパークラス」の存在意義...
-
interface,extend,implementの...
-
Javaのインターフェイスの意味
-
SmtpMailのtimeout
-
Javaの自作例外クラスについて
-
C言語のプログラムをJavaに
-
publicフィールドの使いどき
-
VBがオブジェクト指向言語でな...
-
Commons-Discovery.jarとは?
-
JavaでのAPIの覚え方ってみさな...
-
PIC18F2550のUSBでのインタラプ...
-
Javaでは多重継承ができない、...
-
インターフェースの利点は?
-
Strutsのバージョンアップによ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
interface,extend,implementの...
-
「ラッパークラス」の存在意義...
-
(vba)他のアプリケーションの右...
-
抽象クラスをJUNITでテストする...
-
オーバーライドとラッパーの違い
-
C# 「データが失なわれる可能性...
-
【C#】クラスのコンストラクタ...
-
JTextFieldの入力制限
-
c++でのヘッダーファイルの循環...
-
vb.net 自作プロパティの削除に...
-
「継承されたメソッドの可視性...
-
ASP.NETでの共通コードの書き方...
-
Javaのインスタンス化の構文の...
-
Javaで下線
-
メソッドの引数にクラス名を渡す
-
VB DLLプロジェクトについて
-
C#からDLLを呼びたいのですが・...
-
インターフェース型の使い方が...
-
System.Collections.Generic.Li...
-
C# 継承の問題で programに示さ...
おすすめ情報