JSR220(EJBCore)3章 Client View of a Session Bean 3.1.概要

クライアントにとって、セッションオブジェクトは非永続化オブジェクトであり、サーバー上で動作するビジネスロジックを実装しているものです。
セッションオブジェクトについての考え方の一つは、クライアントプログラムの論理的な拡張(サーバー上で動作する)というものです。
セッションオブジェクトは複数のクライアント間で共有されるものではありません。


クライアントは決してセッションビーンクラスのインスタンスに直接アクセスしません。
クライアントはセッションビーンのクライアント・ビュー・インタフェースを解してセッションオブジェクトにアクセスします。


セッションビーンのクライアントは、ビーンの提供するインタフェースとクライアントが使用するインタフェースによって、ローカルクライアントやリモートクライアント、Webサービスクライアントであることでしょう。


セッションビーンのリモートクライアントは、同一または異なるコンテナにデプロイされた他のエンタープライズビーンでありえます。また、アプリケーションやアプレットサーブレットといった任意のJavaプログラムでありえます。
セッションビーンのクライアントビューはまた、Javaプログラミング言語で書かれていないCORBAクライアントといった非Java環境に対してもマッピングされます。


セッションビーンのリモートクライアントによって使用されるインタフェースはリモートビジネスインタフェース(又はリモートEJBオブジェクトインタフェース)としてコンテナによって実装され、セッションビーンのリモートクライアントビューはロケーションに依存しません。
同じJVMの中でセッションオブジェクトとして動作しているクライアントは、同一又は異なるマシン上の異なるJVMの中で動作しているクライアントとして同じAPIを使用します。
#リモートの場合、物理的に同じJVM上にあっても論理的に異なるJVM上に載ってるように動くってこと?


Terminology(専門用語)note:
この仕様書では"リモートビジネスインタフェース"という用語を、「リモートアクセスをサポートするEJB3.0のセッションビーンのビジネスインタフェース」を参照する意味で使用します。
"リモートインタフェース"という用語は、EJB2.1のリモートコンポーネントインタフェースを参照するものとして使用します。"ローカルビジネスインタフェース"はローカルアクセスをサポートするEJB3.0のセッションビーンのローカルビジネスインタフェースを意味します。
"ローカルインタフェース"はEJB2.1のローカルコンポーネントインタフェースとして使用します。


セッションビーンのローカルビジネスインタフェースまたはローカルインタフェースの使用はローカルクライアントとセッションのつながりを必然的に引き起こします。
エンタープライズビーンのローカルクライアントはビーンとして同一のコンテナ内に結び付けられなければなりません。
ローカルクライアントビューはロケーションに独立ではありません。


ステートレスセッションビーンのクライアントはWebサービスクライアントであるかもしれません。
ステートレスセッションビーンだけがWebサービスクライアントビューを提供することができます。
Webサービスクライアントは、エンタープライズビーンWSDLドキュメントによって記述されたWebサービスクライアントビューを使用します。
このビーンのクライアントビューWebサービスエンドポイントは、JAX-WSエンドポイントまたはJAX-RPCエンドポイントインタフェースの観点で記述されています。
Webサービスクライアントについては3.2.4と3.5章で議論しています。


セッションビーンに対して1つ以上のクライアントビューが提供できますが、典型的には唯一つだけが提供されます。


The considerations that should be taken into account in determining the client view to be used for a session bean are further described in Section 3.2, “Local, Remote, and Web Service Client Views”.


その作成から破棄まで、セッションオブジェクトはコンテナ内で生きています。
コンテナはセキュリティ、並行処理、トランザクション、二次ストレージへのスワッピング、そしてセッションオブジェクトに対するその他のサービスを、クライアントに対して透過的に提供します。


各セッションオブジェクトは一般にコンテナのクラッシュや再起動で生き残らないIDを持ちます。
ハイエンドのコンテナ実装はコンテナやサーバーのクラッシュをリモートクライアントやWebサービスクライアントからマスクする機能を持ってはいますが(SessionObjectはそうでない)。


セッションオブジェクトのクライアントビューはセッションビーンの実装とコンテナから独立しています。