ビジネス・コンポーネント接続タグ - <jbo:ApplicationModule>

HTTPリクエストを処理するアプリケーション・モジュール・インスタンスを作成します。

JSP構文

<jbo:ApplicationModule
   id="appModuleInstanceName"
   [ configname="businessComponentsPackageName.appModuleName.configName" ] | [ definition="data model definition" ]
   [ lock="true | false" ]
   [ waittimeout="time in ms. | 60000" ]
   [ releasemode=" Stateful | Stateless | Reserved" ]
   [ username="jdbc_connection_username" ] | [ iiop_username="iiop_connection_username" ]
   [ password="jdbc_connection_password" ] | [ iiop_password="iiop_connection_password" ]
/>

注意: コンポーネント・パレットを使用してJSPページに<jbo:ApplicationModule>タグを挿入した場合、すべての属性が表示されるとはかぎりません。このタグの「属性」ダイアログでは、変更可能な属性のみが表示されます。その他の属性の値は、後述の属性の項で説明するようにアプリケーションから取得されます。

説明

<jbo:ApplicationModule>タグは、アプリケーション・モジュール・インスタンスへのランタイム接続を提供します。<jbo:ApplicationModule>タグでは、接続情報を指定するかわりに、開発者がビジネス・コンポーネント・プロジェクトに対して作成した構成のリストから、名前付きの構成を選択します。

JSPページは、アプリケーション・モジュールのインスタンスを介してビジネス・コンポーネントにアクセスします。アプリケーション・モジュール・インスタンスについて、JSPセッション中にどのように割り当てられるか、状態が保存されるかどうか、データベースからのフェイルオーバー・サポートがあるかどうかを決定できます。ビジネス・コンポーネント・テクノロジでのデフォルトのアプリケーション・モジュール・プールの実装では、ステートフル、ステートレスおよびリザーブの3つのモードをサポートします。

変更しないかぎり、ステートレスがすべてのJSPページのデフォルト・モードです。JSPアプリケーションでは、データ・バインドされたJSPページでアプリケーション・モジュール・インスタンスを解放する方法を、次の2つのレベルで制御できます。

注意: <jbo:ApplicationModule>タグに指定したモードは、個々のJSPページのレベルでのJSPアプリケーション・モジュール解放モードをオーバーライドします。

ページの処理中、ページに対するHTTPリクエストは、各アプリケーション・モジュールの限定されたインスタンス・プールを共有します。ステートレスJSPアプリケーションでは、アプリケーション・モジュールの特定のインスタンスへのアクセスは、ページ・リクエストの継続中のみ維持されます。「ステートレス」オプションが指定された<jbo:ApplicationModule>タグの処理後は、アプリケーション・モジュール・インスタンスは解放され、そのアプリケーション・モジュールのインスタンス・プールに戻される必要があります。

個々のJSPページまたはJSPアプリケーション全体にデフォルトの「ステートレス」オプションを使用する場合、データ・タグは、特定のHTTPセッション中に新規ページが起動するたびに同じアプリケーション・モジュール・インスタンスにアクセスするとはかぎりません。このため、ある起動から次の起動までの間、ビュー・オブジェクトの行セットが同じであることは期待できません。この動作は、JSPページがそれぞれ独立して動作しており、状態の維持が必要な単一のタスクを表していない場合に望ましい動作です。JSPページの大多数がアプリケーション・モジュール・インスタンスをステートレスに解放できるようにすると、アプリケーション・モジュールの状態管理に伴うオーバーヘッドが削減され、JSPアプリケーションが可能なかぎり高レベルのパフォーマンスで稼働することが保証されます。

<jbo:ApplicationModule>タグに対して「ステートフル」オプションを指定した場合も、JSPアプリケーションのデータ・タグは、そのアプリケーションが起動するたびに同じアプリケーション・モジュール・インスタンスにアクセスするとはかぎりません。ただし、ステートレスJSPページとは異なり、ビジネス・コンポーネントは、アプリケーション・モジュールの解放時にアプリケーション・モジュールの状態をデータベースに保存するため、ビュー・オブジェクトの行セットはある起動から次の起動まで同じに保たれます。ステートフル・モードは、次の場合に適しています。

ステートフル・モードでは、ビジネス・コンポーネントはデータベースのフェイルオーバーをサポートし、アプリケーション・モジュール・プールが効率的に使用されるようになります。アプリケーション・モジュール・プール・マネージャは、現在位置や、あるJSPページから次のJSPページに渡す必要があるすべての動的アプリケーション情報などのアプリケーション状態を管理します。ステートフル・モードは、ユーザーがデータの変更を発行するかしないかに関係なく役立ちます。これは、ビジネス・コンポーネントを利用して前のHTTPリクエストへの問合せの復元を管理するほうが、Business Components APIを使用してこれらのタスクをプログラムで実行するよりも簡単で効率的なためです。

重要: ユーザーがデータをステートフル・モードまたはリザーブ・モードで変更できるようにする場合は、<jbo:Commit>タグを使用してデータベースに変更を送る必要があります。

<jbo:ApplicationModule>データ・タグに対してリザーブオプションを指定した場合、データ・タグがアプリケーション・モジュールに接続された後は、同じHTTPセッション中に任意のデータ・タグからそのアプリケーション・モジュールに接続した場合も、アプリケーション・モジュールの同じインスタンスが使用されます。これは、後続の接続が別のJSPページからの場合も、同じJSPページの新規の起動の場合も同じです。このモードは、ステートフル・アプリケーションと似ていますが、フェイルオーバーはサポートせず、アプリケーション・モジュールの再利用もできません。リザーブ・モードは、主に、標準外のJDBC接続が定義されている場合にアプリケーション・モジュールとの互換性を保つために提供されています。

参照: <jdev_install>/BC4J/src/bc4jhtmlsrc.zipファイル内のoracle.jbo.common.ampool.SessionCookie.java

属性

次の例では、oracle.jbo.*パッケージ内の実装クラスにアクセスするために、ビジネス・コンポーネント・データ・タグでスクリプト可能な変数を使用できることを示しています。この例では、スクリプトレットでmypackage変数を使用してoracle.jbo.common.ampool.SessionCookie APIからアプリケーション・モジュール・オブジェクトへの参照を取得し、getName()メソッドをコールしています。

 
<%@ taglib uri="/webapp/DataTags.tld" prefix="jbo" %> 
<%@ page import="oracle.jbo.*" %> <jbo:ApplicationModule id="mypackage" definition="MyProject.MypackageModule" releasemode="Stateless" />
<% ApplicationModule appMod = mypackage.useApplicationModule(); %> 
Application Module name = <%=appMod.getName()%> <jbo:ReleasePageResources />         

JSPページおよびアプリケーション・モジュール・プールについて

bc4j.xcfgファイルでのビジネス・コンポーネントJSPランタイム・プロパティの定義
単純なJSPページへのビジネス・コンポーネント・データ・バインディングの追加
データ・タグを使用したアプリケーション・モジュール状態の管理