このトピックでは、JSPページのビジネス・コンポーネント・データ・タグ・ライブラリについてのみ説明します。
非推奨機能: ビジネス・コンポーネント・データ・タグ・ライブラリは、既存アプリケーションの保守用としてのみ、JDeveloper 10g((10.1.3)でサポートされています。データ・タグは、現行のプロジェクトが、datatags.jar
のエントリのあるweb.xml
ファイルを含んでいる場合にのみ、コンポーネント・パレットに表示されます(既存のすべてのデータ・タグ・プロジェクトの場合)。新規のデータバインドJSPページを作成する場合は、JavaServer Faces(JSF)コンポーネントのあるOracle ADFデータ・バインディングを使用することをお薦めします。
データ・バインドされたビジネス・コンポーネントJSPアプリケーション・ページは、Oracle ADF Business Componentsアプリケーション・モジュールのインスタンスを介してビジネス・コンポーネントにアクセスします。アプリケーション・モジュール・インスタンスについて、JSPセッション中にどのように割り当てられるか、状態が保存されるかどうか、データベースからのフェイルオーバー・サポートがあるかどうかを決定できます。Oracle ADF Business Componentsでのアプリケーション・モジュール・プールの実装は、次の3つのモードをサポートします。
JSPページ用に選択するモードは、生成するWebアプリケーションのタイプに依存します。次の項ではそのオプションと、ビジネス・コンポーネントでキャッシュされるデータにアクセスするWebアプリケーションで、それらのオプションがどのような役割を果たしているかについて説明します。
ビジネス・コンポーネント・データ・タグ・アプリケーションでのアプリケーション・モジュール状態管理について
ページの処理中、ページに対するHTTPリクエストは、各アプリケーション・モジュールの限定されたインスタンス・プールを共有します。ステートレスJSPアプリケーションでは、アプリケーション・モジュールの特定のインスタンスへのアクセスは、ページ・リクエストの継続中のみ維持されます。「ステートレス」オプションが指定された<jbo:ApplicationModule>
データ・タグの処理後は、アプリケーション・モジュール・インスタンスは解放され、そのアプリケーション・モジュールのインスタンス・プールに戻される必要があります。
個々のJSPページまたはJSPアプリケーション全体に「ステートレス」オプションを選択した場合、データ・タグは、特定のHTTPセッションで新しいページが起動されるたびに、必ず同じアプリケーション・モジュール・インスタンスにアクセスするわけではありません。このため、ある起動から次の起動までの間、ビュー・オブジェクトの行セットが同じであることは期待できません。この動作は、JSPページがそれぞれ独立して動作しており、状態の維持が必要な単一タスクを表していない場合に望ましい動作です。JSPページの大多数がアプリケーション・モジュール・インスタンスをステートレスに解放できるようにすると、アプリケーション・モジュールの状態管理に伴うオーバーヘッドが削減され、JSPアプリケーションが可能なかぎり高レベルのパフォーマンスで稼働することが保証されます。
<jbo:ApplicationModule>
データ・タグに対してデフォルトの「ステートフル」オプションを指定した場合も、JSPアプリケーションのデータ・タグは、そのアプリケーションが起動するたびに同じアプリケーション・モジュール・インスタンスにアクセスするとはかぎりません。ただし、ステートレスJSPページとは異なり、ビジネス・コンポーネントは、アプリケーション・モジュールの解放時にアプリケーション・モジュールの状態を(passivationstoreパラメータの値に応じて)データベース、ファイルまたはメモリーに保存するため、ビュー・オブジェクトの行セットでは1回起動されたものが次に起動されるまで同じものが保持されます。ステートフル・モードは、次の場合に適しています。
1つのタスクを完了するためにユーザーが対話する一連のJSPページ間で情報を保持する場合
ユーザーにより発行された変更をあるページから次のページに保持する場合
ステートフル・モードでは、ビジネス・コンポーネントはデータベースのフェイルオーバーをサポートし、アプリケーション・モジュール・プールが効率的に使用されるようになります。アプリケーション・モジュール・プール・マネージャは、現在位置や、あるJSPページから次のJSPページに渡す必要があるすべての動的アプリケーション情報などのアプリケーション状態を管理します。ステートフル・モードは、ユーザーがデータの変更を発行するかしないかに関係なく役立ちます。これは、ビジネス・コンポーネントを利用して前のHTTPリクエストへの問合せの復元を管理するほうが、Business Components for Java APIを使用してこれらのタスクをプログラムで実行するよりも簡単で効率的なためです。
重要: ユーザーがデータをステートフル・モードまたはリザーブ・モードで変更できるようにする場合は、次のビジネス・コンポーネント・データ・タグ・アプリケーションのデータベース・トランザクションについてに示すように、Commitデータ・タグを使用してデータベースに変更を送る必要があります。
<jbo:ApplicationModule>
データ・タグに対してリザーブ・オプションを指定した場合は、データ・タグがアプリケーション・モジュールに接続されると、その後同じHTTPセッション中に任意のデータ・タグからそのアプリケーション・モジュールに接続した場合も、アプリケーション・モジュールの同じインスタンスが使用されます。これは、後続の接続が別のJSPページからの場合も、同じJSPページの新規の起動の場合も同じです。このモードは、ステートフル・アプリケーションと似ていますが、フェイルオーバーはサポートせず、アプリケーション・モジュールの再利用もできません。リザーブ・モードは、イントラネット・タイプの環境で使用すると便利です。
ビジネス・コンポーネント・データ・タグ・アプリケーションのデータベース・トランザクションについて
Webアプリケーションのユーザーがデータ・バインドされたビジネス・コンポーネントJSPページを介してデータを変更し、データを処理するためにJSPページで「発行」をクリックすると、Webアプリケーション・フレームワーク(基本的にOracle ADF Business Components)は、解放時のアプリケーション・モジュールの状態に応じて異なる方法でデータベース・トランザクションを処理します。
解放モード | アプリケーション・モジュールの動作 | データベース・トランザクションおよびユーザーの操作 | アプリケーション・モジュール・ロックの動作 |
---|---|---|---|
ステートレス |
ページ処理リクエスト間でアプリケーション・モジュール・インスタンスの状態を保持しません。インスタンスは、JSPページの終了後すぐに解放されます。 注意: JSPアプリケーションに多数のユーザーが同時にアクセスすることが想定される場合に、このオプションを選択します。ステートレス・オプションでは、多くのユーザーがJSPアプリケーションに同時にアクセスできますが、ユーザーは、JSPページを起動(または再起動)するたびに新しいアプリケーション・モジュール・インスタンスに再接続されます。 |
ステートレス・モードでは、リクエスト間でアプリケーション・モジュールの状態が維持されないため、Webアプリケーション・フレームワークは変更を自動的にポストおよびコミットします。ユーザーは、ステートレス・モードでコミットを開始する必要はありません。JSPページの「コミット」および「ロールバック」ボタンは使用不可になります。 |
ステートレス・モードでは、ビジネス・コンポーネント・プロパティ |
ステートフル |
ページ処理リクエスト間でアプリケーション・モジュール・インスタンスの状態をデータベースに保持します。これにより、アプリケーションは、単一のアプリケーション・モジュール・インスタンスを長期間使用せずにユーザーのデータを維持できます。 注意: ステートフル・モードは、HTTPセッションに対してフェイルオーバー・サポートを提供します。アプリケーション・モジュールで標準JDBC接続を使用する場合に適しています。 |
Webアプリケーション・フレームワークは、ページ・リクエストの終了時に、データ変更を含むアプリケーション・モジュールの状態をデータベースに単純に保存します。このモードでは、ユーザーは、プロセスのJSPページで「コミット」ボタンをクリックしてコミットを開始します。ユーザーが「コミット」ボタンをクリックすると、フレームワークはデータベースに対するポストおよびコミットを(まとめて1つのステップとして)ただちに開始します。オプションとして、ユーザーは「ロールバック」ボタンをクリックし、ポストを開始せずに変更がデータベースに入力されることを防ぐことができます。アプリケーション・モジュールの状態は保存されるため、ユーザーは、HTTPセッション中に任意の時点でコミットまたはロールバックを開始できます。 |
ステートフル・モードでは、ビジネス・コンポーネント・プロパティ |
リザーブ |
ブラウザ・セッションの間アプリケーション・モジュール・インスタンスを割り当てます。インスタンスは、セッションの終了時にのみ解放されます。このモードは、主に特定のアプリケーション・モジュール定義との互換性を保つためのものです。このモードではフェイルオーバーはサポートされません。 注意: リザーブ・モードは、主にアプリケーション・モジュールで標準以外のJDBC接続定義が必要な場合に便利です。このモードではフェイルオーバーはサポートされません。 |
Webアプリケーション・フレームワークは、変更をデータベースに自動的にポストします(また、影響を受ける表に対してDMLで指定されたデータベース・トリガーを開始します)。このモードでは、ユーザーは、プロセスのJSPページで「コミット」ボタンまたは「ロールバック」ボタンをクリックする必要があります。アプリケーション・モジュール自体はHTTPセッション中は解放されないため、ユーザーは任意の時点でコミットまたはロールバックを開始できます。 |
解放モードでは、ペシミスティック・ロックを信頼して使用でき、プロパティ |
Oracle9i JDeveloperのアプリケーション・モジュール・プールの命名
ビジネス・コンポーネントJSPページをデータ・タグで作成すると、データ・バインドされたJSPファイルにより次のようにアプリケーション・モジュールが定義されます。
<jbo:ApplicationModule releasemode="Stateful"
definition="DataBindings.model_AppModuleDataControl"
configname="bc4j1.model_AppModuleDataControl.Bc4j1Module9iAS"
id="model_AppModuleDataControl" />
Oracle9i JDeveloperからは、プールの名前にconfigname
値が使用されます。たとえば、次のJavaコードはアプリケーション・モジュール・プールの取得方法を示しています。
<%
oracle.jbo.common.ampool.PoolMgr mgr = oracle.jbo.common.ampool.PoolMgr.getInstance();
oracle.jbo.common.ampool.ApplicationPool pool = mgr.getPool("bc4j1.model_AppModuleDataControl.Bc4j1Module9iAS");
pool.commitAndSyncCache(ds1.getRowSet().getApplicationModule());
%>
個々のWebアプリケーションでのアプリケーション・モジュール使用の同期
同じビジネス・コンポーネントにアクセスする複数のWebアプリケーションを単一サーバー上にデプロイする場合、別のアプリケーションのビジネス・コンポーネントJSPページが同じアプリケーション・モジュールのインスタンスを共有できないようにします。プロパティjbo.server.in_oc4j
をtrue
に設定し、OC4Jインスタンス内でビジネス・コンポーネントが稼働していることを宣言すると、アプリケーション・プール・マネージャにより、アプリケーション・プール・インスタンスがアプリケーション間で共有されないようにできます。このプロパティを指定するには、OC4Jコマンドラインで次のように入力します。
java -D jbo.server.in_oc4j=true -jar oc4j.jar
マルチフレーム型Webアプリケーションでのアプリケーション・モジュール使用の同期
Webアプリケーションのユーザーが、1回のHTTPセッション中に異なるJSPページを介して同じアプリケーション・モジュール・インスタンスにアクセスする場合、ランタイム・エラーが発生する場合があります。これは、そのユーザーが異なるフレームでJSPページを実行したことが原因です。各フレームに同じアプリケーション・モジュールが渡されて使用されるためです。したがって、あるビュー・オブジェクトがいずれかのJSPページで終了すると、もう一方のビュー・オブジェクトの結果セットも終了し、ランタイム例外が生成されます。
この問題が発生しないようにするには、次の2つの方法があります。
方法1:
方法2:
RowSet rs = vo.getRowSet();
または
Row[] rows = vo.getAllRowsInRange();
JSPページおよびビジネス・コンポーネントについて
アプリケーション・モジュール・プールについて
ビジネス・コンポーネント・データ・タグについて
JSPプロジェクトのビジネス・コンポーネント構成プロパティについて
JSPプロジェクトのビジネス・コンポーネント構成プロパティの定義
JSPページに対するビジネス・コンポーネント接続の作成
ビジネス・コンポーネント・データ・タグを使用したアプリケーション・モジュールの状態管理
リファレンス: ビジネス・コンポーネント・データ・タグ・ライブラリ
Copyright © 1997, 2006, Oracle. All rights reserved.