 |
マークは、次期バージョンにて対応予定です。 |
 |
マークは、スケジュールは未定ですが今後対応する予定です。
(無印)は、既にリリース済み製品で対応されたものまたは、回答(A.〜)により解決やクローズされた項目です。
|
【件 名】
EJBコントローラを経由するcFrameworkの設計と実行性能の関係 【日 付】 (2003/07/04) 【Q番号】[0307002] 【製 品 名】 cFramework(Ver.
1.5.5)
cFrameworkでEJB層と通信する場合、EJBコントローラを経由して実際のEJBを呼び出す形になりますが、このことは論理ホップ数を増やすことになり、性能が低下する要因になる気がするのですが、現実にはそのような要因で性能が低下することは無いと考えてよいでしょうか。
また、EJBコントローラはStatefull Session Beanでなければならないでしょうか。
1個のベースコンポーネントを呼び出す場合、
EJBコントローラを経由することは、確かに論理ホップ数の増加になります。
しかし、1つの処理を、複数個のベースコンポーネントを組み合わせたり、
複数回のビジネスメソッド呼び出しを組み合わせたりして構成する場合、
Web層とEJB層の間のリモート呼び出しが少なくて済むことになり、
結果的に、全体的な実行コストは低く抑えられることとなります。
cFrameworkはWeb層・EJB層の分散配置可能な構成を想定しているため、
EJBコントローラを経由する設計を選択しております。
また、EJBコントローラを「web層と通信する唯一のEJB」と位置付けることにより、
web層とEJB層の通信やトランザクションを明確化し、 ビジネスアプリケーションのポータビリティを損なうことなく
効率的な呼び出しができることを重視した設計となっております。
この、EJBコントローラを利用する設計は、J2EEのSession Facadeパターンに基づいております。
http://java.sun.com/blueprints/corej2eepatterns/Patterns/SessionFacade.html
上記のような、EJBコントローラが単一のエントリポイントとなる性質のため、
EJBコントローラはStateful Session Beanである必要があります。
なお、アプリケーションサーバの実装によっては、同一EAR内のEJBであれば
メソッドのパラメータが参照渡しになるものがあります。 その場合は、WebコントローラとEJBコントローラの通信が
大きな性能低下の要因となる事はございません。
また、cFramework推奨の設計ではございませんが、必ずしもEJBコントローラを
経由しなければならないという仕組みではなく、例えばWebコントローラから
直接ベースコンポーネントを呼び出す設計も可能です。
|