エンタープライズ Bean が ActivitySession コンテキストに参加して、ActivitySession ベースの操作をサポートできるようにするには、このタスクを使用してエンタープライズ Bean 用の ActivitySession デプロイメント属性を構成します。
始める前に
このタスクの説明では、
WebSphere® Application Server でデプロイできるアプリケーション・エンタープライズ Bean を含むエンタープライズ・アーカイブ (EAR) ファイルがあることを前提としています。
詳しくは、アプリケーションのアセンブルに関するトピックを参照してください。
このタスクについて
アプリケーションのデプロイメント属性は、アセンブリー・ツールを使用して構成します。
このトピックでは、Rational® Application Developer を使用して ActivitySession デプロイメント属性を構成する方法について説明します。
これらの属性は、「Load at」 (Bean がどの時点でデータベースから状態をロードするかを指定する) などの他のデプロイメント属性に加えて構成します。アセンブリー・ツールのフィールド、および関連するタスクのヘルプについて詳しくは、Rational Application Developer の情報を参照してください。
エンタープライズ Bean 用に ActivitySession デプロイメント属性を設定するには、以下のステップを実行します。
手順
- アセンブリー・ツールを始動します。 詳しくは、
Rational Application Developer の
情報を参照してください。
- アプリケーション EAR ファイルを作成または編集します。
注: 必ずターゲット・サーバー
として WebSphere Application Server バージョン 7.0 を設定してください。
例えば、既存のアプリケーションの属性を変更するには、インポート・ウィザードを使用して EAR ファイルをアセンブリー・ツールにインポートします。
インポート・ウィザードを開始するには、次のようにします。
- とクリックします。
- 「次へ」をクリックして EAR ファイルを選択します。
- 「ターゲット・サーバー」フィールドで、「WebSphere Application Server v7.0」を
選択します。
- 「終了」をクリックします。
- Java™ EE パースペクティブの「Project Explorer」ビューで、
エンタープライズ Bean インスタンスの EJB モジュールを右クリックして、
の順でクリックします。 そのエンタープライズ Bean のプロパティー・ダイアログ・ノートブックが、プロパティー・ペインに表示されます。
- プロパティー・ペインで、「Bean」タブを選択します。
- 変更する Bean を選択します。
- 「WebSphere Extensions」セクションの「Bean のキャッシュ」で、「活動化」属性を「ActivitySession」に設定します。
この活動化ポリシーを持つエンタープライズ Bean は、以下のように活動化され、非活性化されます。
- アクティベーション時に ActivitySession コンテキストが存在する場合、ActivitySession 境界で。
- アクティベーション時にトランザクション・コンテキストがある (しかし ActivitySession コンテキストはない) 場合、トランザクション境界で。
- これ以外の場合、起動境界で。
- 「ローカル・トランザクション」グループ・ボックスで、「境界」属性を「ActivitySession」に設定します。 この設定を使用すると、ローカル・トランザクションは、
それが開始された ActivitySession の有効範囲内で解決される必要があります。
ActivitySession コンテキストが存在しない場合は、
ローカル・トランザクションが開始された Bean メソッド内で解決されなければなりません。
ActivitySession の設定は、いずれの EJB ホーム・メソッド (create メソッドや finder メソッドなど) にも適用されません。EJB ホーム・メソッドは、ActivitySession に参加できません。この状況はデッドロックを発生させる場合があるためです。
- エンティティー Bean またはセッション Bean の場合は、それぞれの EJB メソッド
ごとに ActivitySession プロパティーを設定します。
- プロパティー・ペインで、「ActivitySession」タブを選択します。
- 「Configure ActivitySession policies」フィールドで、「追加」または「編集」をクリックして、エンタープライズ Bean のメソッドの「アクティビティー・セッション種類」属性を設定します。
これにより、エンタープライズ Bean のビジネス・メソッドがメソッド起動を代行する場合に、コンテナーが ActivitySession 境界を管理する方法を指定します。
- 常になし
- コンテナーは、ActivitySession コンテキストなしで Bean メソッドを呼び出します。
- クライアントが ActivitySession コンテキスト内から Bean メソッドを呼び出した場合、
コンテナーは InvalidActivityException 例外をスローします。これは javax.rmi.RemoteException です。
- クライアントが、ActivitySession コンテキストの外側から Bean メソッドを呼び出すと、
コンテナーは、非サポート値が設定されている場合と同様に振る舞います。
クライアントは、ActivitySession コンテキストなしでメソッドを呼び出す必要があります。
- 必須
- コンテナーは常に、クライアントに関連付けられた ActivitySession コンテキスト内で Bean メソッドを呼び出します。
クライアントが ActivitySession コンテキストなしで Bean メソッドを呼び出そうとすると、
コンテナーは、ActivityRequiredException 例外をクライアントにスローします。ActivitySession コンテキストは、エンタープライズ Bean メソッドがアクセスするすべての EJB オブジェクトまたはリソースに渡されます。
ActivityRequiredException 例外は、javax.rmi.RemoteException です。
- 新規を必要とする
- コンテナーは、クライアントが ActivitySession コンテキストの内側あるいは外側のどちらでメソッドを呼び出すかにかかわらず、常に新規 ActivitySession コンテキスト内で Bean メソッドを呼び出します。
新規 ActivitySession コンテキストは、
この Bean メソッドが使用するすべてのエンタープライズ Bean オブジェクトまたはリソースに渡されます。
受信された ActivitySession コンテキストはすべて、そのメソッドの継続時間中は中断され、
そのメソッドの終了後にレジュームされます。
コンテナーは、メソッドのディスパッチ前に新規 ActivitySession を開始し、
メソッドが終了した後、その ActivitySession を完了します。
- 必須
- コンテナーは、ActivitySession コンテキスト内で Bean メソッドを呼び出します。
クライアントが ActivitySession コンテキスト内から Bean メソッドを呼び出す場合、
コンテナーは、そのクライアント ActivitySession コンテキスト内で Bean メソッドを呼び出します。
クライアントが ActivitySession コンテキストの外側から Bean メソッドを呼び出す場合、
コンテナーは、新しい ActivitySession コンテキストを作成して、そのコンテキスト内から Bean メソッドを呼び出します。
ActivitySession コンテキストは、
この Bean メソッドが使用するすべてのエンタープライズ Bean オブジェクトまたはリソースに渡されます。
- 非サポート
- コンテナーは、ActivitySession コンテキストなしで Bean メソッドを呼び出します。クライアントが ActivitySession コンテキスト内から Bean メソッドを呼び出す場合、
コンテナーは、ActivitySession と現行スレッドの間の関連付けを中断してから、エンタープライズ Bean インスタンス上のメソッドを呼び出します。
次に、メソッドの起動が戻されると、コンテナーは中断されていた関連付けを再開します。
中断された ActivitySession コンテキストは、
この Bean メソッドが使用するどのエンタープライズ Bean オブジェクトおよびリソースにも渡されません。
- サポート
- クライアントが ActivitySession 内で Bean メソッドを呼び出す場合、
コンテナーは、ActivitySession コンテキスト内で Bean メソッドを呼び出します。
クライアントが ActivitySession コンテキストなしで Bean メソッドを呼び出す場合、
コンテナーは、ActivitySession コンテキストなしで bean メソッドを呼び出します。ActivitySession コンテキストは、
この Bean メソッドが使用するすべてのエンタープライズ Bean オブジェクトまたはリソースに渡されます。
- 「次へ」をクリックします。
- 「アクティビティー・セッション種類」ポリシーが適用されるメソッドを選択します。
- 「終了」をクリックします。
メソッド呼び出しの代行時にコンテナーが ActivitySession 境界をどのように管理するかは、ここで設定される「ActivitySession 種類」および「コンテナー・トランザクション・タイプ」(トランザクション・デプロイメント属性の構成に関するトピックで説明しています) の両方の設定値に応じて異なります。これら 2 つのプロパティー間の関係について詳しくは、トピック『ActivitySession とトランザクション・コンテナー・ポリシーの組み合わせ』を参照してください。
- デプロイメント記述子の変更を保存します。
- デプロイメント記述子エディターを閉じます。
- プロンプトが出された場合は、「はい」をクリックして デプロイメント記述子に変更を保存します。
- アーカイブ・ファイルを検査します。 Rational Application Developer を使用したファイルの検査について詳しくは、Rational Application Developer の情報を参照してください。
- プロジェクトのポップアップ・メニューの「デプロイ」をクリックして、EJB デプロイメント・コードを生成します。
- オプション: 完成したモジュールを WebSphere Application Server インストール済み環境でテストします。
モジュールを右クリックして、
「サーバー上で実行」をクリックし、
表示されるウィザードの指示に従います。
重要: 「サーバー上で実行」は、
単体テストにのみ使用してください。
アセンブリー・ツールは、WebSphere Application Server の
インストール環境を制御し、アプリケーションがリモート側で公開されると、アセンブリー・ツールは
当該サーバーのサーバー構成ファイルを上書きします。実動サーバーでは、「サーバー上で実行」オプションを使用しないでください。
次のタスク
アプリケーションのアセンブルが完了した後で、システム管理ツールを使用して、
アプリケーションを実行するアプリケーション・サーバーに EAR ファイルをデプロイします。
例えば、管理コンソールを使用するには、エンタープライズ・アプリケーションのデプロイおよび管理に関するトピックを参照してください。