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つのレベルで制御できます。
RELEASE_MODE
プロパティの設定
<jbo:ApplicationModule>
タグの設定
注意: <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
属性
id: データ・アプリケーションのインスタンスの名前。割り当てる名前はページ内で一意である必要があります。規定の任意のJava識別子を割り当てることができます。スクリプトレット内では、このidをタイプoracle.jbo.common.ampool.SessionCookie
のスクリプト可能な変数として使用できます。これはプロジェクトの.cpx
ファイルから取得されるため、「属性」ダイアログには表示されません。ただし、JSPページに定義されたアプリケーション・モジュールidが1つのみである場合は値を変更できます。
注意: Webアプリケーション全体が単一のアプリケーション・モジュールIDを参照していることが重要です。そうでない場合は、ランタイム・エラーが発生する可能性があります。ID属性で指定されたアプリケーション・モジュールによって、アプリケーションのセッション接続および受動化動作が決定されます。
configname: (オプション)アプリケーション・モジュール接続を定義する構成の名前。ビジネス・コンポーネント・プロジェクトでアプリケーション・モジュールを右クリックして「コンフィグレーション」を選択すると、構成パラメータを表示できます。既存のクライアント・データ・モデル定義を使用する場合は、この属性を省略して、かわりにdefinition
属性を設定する必要があります。definition
属性がかわりに使用されるため、「属性」ダイアログに表示されません。
definition: クライアント構成ファイル(.cpx
)に表示されるデータ・モデル定義の名前。各定義では、アプリケーション・モジュール名およびアプリケーション・モジュール接続情報が定義された構成名を指定します。ビジネス・コンポーネントのクライアント・データ・モデルの定義ウィザードを実行して、データ・モデル定義を作成します。プロジェクトにモデル定義がない場合は、この属性を省略し、かわりにconfigname
属性を使用してアプリケーション・モジュール接続情報を定義します。この値はビジネス・コンポーネントのJSPプロジェクトの.cpx
ファイルから取得されるため、「属性」ダイアログに表示されません。
lock: オプション。JSPページによって共有されるアプリケーション・モジュールのセッション・ロックを取得するかどうかを指定します。デフォルトはfalse
です。ロックをtrue
に設定する場合、処理が完了した後、アプリケーション・モジュール・リソースを使用してロックを解放する必要があります。ロックが無制限にかけられると、アプリケーション・スレッドが長時間停止したままになる可能性があります。
waittimeout: オプション。アプリケーション・モジュールを参照するセッションCookieに関連するロックを別のスレッドがかけているときに、JSPページを実行しているスレッドが待機する時間(ミリ秒単位)を決定します。デフォルトは 60000
ミリ秒です。ロックをかけているスレッドがタイムアウトになる前にセッションCookieを解放しない場合、コール側のスレッドは終了します。ビジネス・コンポーネントのJSPページでは、セッションCookieは、ビジネス・コンポーネントに接続するために使用されるアプリケーション・モジュールを参照します。
releasemode: (オプション)HTTPリクエストを処理するアプリケーション・モジュール・インスタンスの状態を決定するモード。JSPページからのHTTPリクエストに対するアプリケーション・モジュールの状態を処理する方法に応じて、Stateful
、Stateless
またはReserved
のいずれかの値を選択します。Stateful
がデフォルト値です。
Stateless
の場合、ページ処理リクエスト間でアプリケーション・モジュール・インスタンスの状態は保持されません。JSPページが終了すると、インスタンスはすぐに解放されます。フェイルオーバーがサポートされていない個別のページや、連携して動作する一連のJSPページによって構成されていないページの場合、このオプションを選択します。
Stateful
の場合、ページ処理リクエスト間のアプリケーション・モジュール・インスタンスの状態は(アプリケーション・モジュール・プロパティpassivationtypeに指定された)データベースまたはファイルに保持されます。これにより、アプリケーションは、1つのアプリケーション・モジュール・インスタンスを長時間にわたって拘束せずにユーザーのデータを保持できるようになります。ステートフル・モードでは、HTTPセッションに対するフェイルオーバーがサポートされます。このため、アプリケーション・モジュールが標準のJDBC接続を使用する場合、このモードを使用することをお薦めします。また、特定のタスクを実行するために個々のユーザーが対話する個々のJSPページの場合も、このモードをお薦めします。
Reserved
: アプリケーション・モジュール・インスタンスは、HTTPセッション中は解放されません。このモードは、ステートフル・アプリケーションと似ていますが、フェイルオーバーはサポートされません。また、アプリケーション・モジュールのリサイクルもできません。リザーブ・モードは、イントラネット・タイプの環境で役に立ちます。このモードでは、ユーザーがプロセスJSPページで「コミット」ボタンまたは「ロールバック」ボタンをクリックする必要があります。
username: (オプション)アプリケーション・モジュールに対して有効なユーザー名。ビジネス・コンポーネント・プロジェクトの.xcfg
ファイルに定義されたJDBC接続にユーザー名が定義されている場合は、この属性を使用する必要はありません。この値はビジネス・コンポーネント・プロジェクトで定義されるとみなされるため、「属性」ダイアログに表示されません。
password: (オプション)アプリケーション・モジュールに対して有効なパスワード。ビジネス・コンポーネント・プロジェクトの.xcfg
ファイルまたはJSPアプリケーションのプロパティ・ファイルに定義されたJDBC接続にパスワードが定義されている場合は、この属性を使用する必要はありません。この値はビジネス・コンポーネント・プロジェクトで定義されるとみなされるため、「属性」ダイアログに表示されません。
iiop_username: (オプション)アプリケーション・モジュールに対して有効なユーザー名。ビジネス・コンポーネント・プロジェクトの.xcfg
ファイルに定義されたIIOP接続にユーザー名が定義されている場合は、この属性を使用する必要はありません。この値はビジネス・コンポーネント・プロジェクトで定義されるとみなされるため、「属性」ダイアログに表示されません。
iiop_password: (オプション)アプリケーション・モジュールに対して有効なパスワード。ビジネス・コンポーネント・プロジェクトの.xcfg
ファイルまたはJSPアプリケーションのプロパティ・ファイルに定義されたIIOP接続にパスワードが定義されている場合は、この属性を使用する必要はありません。この値はビジネス・コンポーネント・プロジェクトで定義されるとみなされるため、「属性」ダイアログに表示されません。
例
次の例では、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 />
Copyright © 1997, 2009, Oracle. All rights reserved.