EJB コントロールを使用する

このトピックでは、既存の EJB コントロールを Web サービスで使用する方法について説明します。

コントロールの詳細については、コントロール : Web サービスからリソースを使用するを参照してください。

EJB コントロールについては、EJB コントロール : Web サービスからエンタープライズ JavaBean を使用するを参照してください。

EJB コントロールの作成方法については、新しい EJB コントロールを作成するを参照してください。

既存の EJB コントロールを使用する

コントロールはすべて同じモデルに従っています。したがって、既存の EJB コントロールもその他の既存のコントロールを使用する場合とほぼ同じです。

既存のコントロールの使用方法については、コントロールを使用するを参照してください。

必要な EJB インタフェース

WebLogic Workshop がコードを補完したり、対象の EJB を表したりするには、EJB のクライアント インタフェースが WebLogic Workshop に対して使用可能になっている必要があります。EJB のクライアント インタフェースを使用可能にするには、EJB のクライアント JAR ファイルまたは EJB JAR ファイルを WebLogic Workshop プロジェクトの WEB-INF/lib ディレクトリに配置します。

既存の EJB コントロールを WebLogic Workshop プロジェクト間でコピーする場合、EJB のクライアント インタフェースを含む関連 JAR ファイルもコピーする必要があります。

EJB のメソッドを呼び出す

対象の EJB のメソッドを呼び出すには、EJB コントロールで同じシグネチャのメソッドを呼び出します。前の節で説明したように、EJB インタフェースが WebLogic Workshop ビジュアル開発環境で使用可能な場合、ソース ビューでは、EJB メソッド名とメソッド パラメータ リストがコードに補完されます。

EJB コントロールで使用可能なすべてのメソッドを確認するには、EJB コントロール インスタンスの名前に続けてピリオド(「.」)を入力します。たとえば、「account.」と入力します。account はコントロール インスタンスの変数名です。

メソッドの引数を確認するには、コントロール インスタンス名、ピリオド、メソッド名、開く括弧の順に入力します。たとえば、「account.withdraw(」と入力します。account はコントロール インスタンスの変数名です。

セキュア化 EJB のメソッドを呼び出す

EJB インタフェースまたは個々の EJB メソッドは、WebLogic Server のセキュリティ メカニズムを利用することでセキュア化することができます。セキュア化された EJB のメソッドにアクセスするには、アクセスを実行する JWS も同様にセキュア化されていなければなりません。WebLogic Workshop Web サービスのセキュリティについては、セキュリティを参照してください。

edocs.beasys.co.jp/e-docs/ にあるSecurityも参考にしてください。

EJB インスタンスの選択

EJB コントロールは EJB インスタンスへの参照を自動的に管理するので、メソッド呼び出しは対象の EJB の正しいインスタンスに送られます。以下の節では、さまざまな EJB メソッドを呼び出した場合に何が起こるのかを説明します。何が起こるのかは、対象の EJB がセッション Bean とエンティティ Bean のどちらであるかによって異なります。

セッション Bean

create メソッド

対象の EJB がセッション Bean の場合、EJB の create メソッドを呼び出す必要はありません。EJB コントロールは、EJB のビジネス メソッドが呼び出されると、適切な EJB のインスタンスへの参照を自動的に作成およびキャッシュします。

ただし、セッション Bean の create メソッドは Bean の新しいインスタンスを作成できないので、サーバはプールにある既存のインスタンスを返します。

EJB 参照のキャッシュ

前の節で説明したように、EJB インスタンスへの参照は、EJB のビジネス メソッドが呼び出されると必ず作成されます。この参照は EJB コントロール内でキャッシュされるので、キャッシュ後に現在の Web サービスのメソッド呼び出しで EJB に対する呼び出しが行われると、参照を使用することができます。EJB コントロールを使用しているのは Web サービスです。セッション Bean の場合、参照の有効期間は、参照が作成された Web サービスのメソッド呼び出しの有効期間となります。

セッション Bean の create メソッドを明示的に呼び出すと、前にキャッシュされていた参照は新しく作成された参照と置き換えられます。

注意 : EJB コントロール内でキャッシュされている EJB 参照の有効期間は、対象の EJB の種類によって異なります。対象の EJB がセッション Bean の場合、EJB 参照の有効期間は現在の Web サービスのメソッド呼び出しの有効期間です。

remove メソッド

セッション Bean を表す EJB コントロールの remove メソッドを呼び出すと、現在キャッシュされている Bean のインスタンスが解放されます。サーバはその時点で Bean を破棄することもできますが、実際の動作はサーバによって決まります。

エンティティ Bean

エンティティ Bean のインスタンスは、セッション Bean とは違い、特定のデータの集合に関連付けられています。通常、このデータの集合はデータベース テーブルの行です。したがって、エンティティ Bean の作成と選択はセッション Bean の場合と異なります。

create メソッド

エンティティ Bean のインスタンスを作成するには、EJB の create メソッドを明示的に呼び出します。エンティティ Bean の場合、create メソッドは基底のデータベース テーブルに新しい行(つまり新しい永続エンティティ)を作成します。

findByPrimaryKey または findXxx メソッド

findByPrimaryKey メソッドまたは EJB の開発者が提供する別の findXxx メソッドを呼び出しても、エンティティ Bean インスタンスを参照できます。

EJB 参照のキャッシュ

EJB コンテナは、現在の会話で使用しているエンティティ Bean インスタンスへの参照をキャッシュします。エンティティ Bean の場合、このインスタンスは createfindByPrimaryKey、または findXxx への最も新しい呼び出しによって返されたインスタンスです。その後 EJB コントロールでメソッドを呼び出すと、EJB コントロールは、キャッシュされている参照の参照先となっている Bean インスタンスのメソッドを呼び出します。EJB 参照がキャッシュされていない場合、EJB コントロールは、create または findByPrimaryKey の呼び出しで最後に成功したキーを使用して、findByPrimaryKey を呼び出そうとします。前に使用したキーがない場合、EJB コントロールは例外を送出します。

Note:EJB コントロール内でキャッシュされている EJB 参照の有効期間は、対象の EJB の種類によって異なります。対象の EJB がエンティティ Bean の場合、EJB 参照の有効期間は現在の Web サービスの会話の有効期間です。会話を使用しない(つまり @jws:conversation phase="none" でマークした)Web サービスのメソッドの場合、会話の有効期間は Web サービスのメソッド呼び出しの有効期間です。

複数のレコードを返すファインダ メソッド

findXxx メソッドは、オブジェクトの列挙値またはコレクションを返す場合があります。EJB コントロールはこのオブジェクトをキャッシュしません。findXxx メソッドの戻り値をキャッシュするには、会話を使用する Web サービスのメンバー変数にオブジェクトを格納する必要があります。

会話を使用してステートを保持する方法については、会話を使用してステートを保持するを参照してください。

remove メソッド

エンティティ Bean を表す EJB コントロールで remove メソッドを呼び出すと、キャッシュされている EJB 参照で表されるレコードが基底の永続ストレージから削除、つまり、行がデータベース テーブルから削除されます。

関連トピック

概要 : エンタープライズ JavaBean(EJB)

新しい EJB コントロールを作成する

会話を使用してステートを保持する