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セッション中にどのように割り当てられるか、状態が保存されるかどうか、データベースからのフェイルオーバー・サポートがあるかどうかを決定できます。Business Components for Java(BC4J)フレームワークでのデフォルトのアプリケーション・モジュール・プールの実装では、ステートフル、ステートレスおよびリザーブの3つのモードをサポートします。
未指定の場合、Stateless
が通常のJSPページのデフォルト・モードです。JSPアプリケーションでは、データ・バインドされたJSPページがアプリケーション・モジュール・インスタンスを解放する方法を、2つのレベルにより制御できます。
RELEASE_MODE
プロパティの設定 注意: 個々のJSPページのレベルでのJSPアプリケーション・モジュール解放モードは、<jbo:ApplicationModule>タグに対して指定したモードでオーバーライドされます。
ページの処理中に、ページに対するHTTPリクエストは、各アプリケーション・モジュールの限定されたインスタンス・プールを共有します。ステートレスJSPアプリケーションでは、アプリケーション・モジュールの特定のインスタンスへのアクセスは、ページ・リクエストの継続中のみ維持されます。Stateless
オプションが指定された<jbo:ApplicationModule>タグが処理された後には、アプリケーション・モジュール・インスタンスは解放され、そのアプリケーション・モジュールのインスタンス・プールに戻される必要があります。
個々のJSPページまたはJSPアプリケーション全体にデフォルトのStateless
オプションを選択した場合には、特定のHTTPセッション中に新規ページが起動するたびに同じアプリケーション・モジュール・インスタンスにアクセスするとはかぎりません。このため、ある起動から次の起動までの間、ビュー・オブジェクトの行セットが同じであることを当てにすることはできません。この動作は、JSPページがそれぞれ独立して動作しており、状態を維持する必要のある単一のタスクを表していない場合に望ましい動作です。JSPページの大多数がアプリケーション・モジュール・インスタンスをステートレスに解放できるようにすると、アプリケーション・モジュールの状態管理にともなうオーバーヘッドが削減され、JSPアプリケーションが可能なかぎり高レベルのパフォーマンスで稼働することが保証されます。
<jbo:ApplicationModule>タグに対してStateful
オプションを指定した場合も、JSPアプリケーションのデータ・タグは、そのアプリケーションが起動するたびに同じアプリケーション・モジュール・インスタンスにアクセスするとはかぎりません。ただし、ステートレスJSPページとは異なり、BC4Jは、アプリケーション・モジュールの解放時にアプリケーション・モジュールの状態をデータベースに保存するため、ビュー・オブジェクトの行セットはある起動から次の起動まで同じに保たれます。ステートフル・モードは、次の場合に適しています。
ステートフル・モードでは、BC4Jはデータベースのフェイルオーバーをサポートし、アプリケーション・モジュール・プールが効率的に使用されるようにします。アプリケーション・モジュール・プール・マネージャは、現在の行の位置や、あるJSPページから次のJSPページに渡される必要のあるすべての動的アプリケーション情報などのアプリケーション状態を管理します。ステートフル・モードは、ユーザーがデータの変更を行うようなページを使用するかどうかにかかわらず役立ちます。BC4Jを利用して前のHTTPリクエストへの問合せの復元を管理するほうが、BC4J APIを使用してこれらのタスクをプログラムで実行するよりも簡単で効率的です。
重要: ユーザーがデータをステートフル・モードまたはリザーブ・モードで変更することを許可する場合は、Commitデータ・タグを使用してデータベースに変更を確定させる必要があります。
<jbo:ApplicationModule>タグに対してReserved
オプションを指定した場合は、データ・タグがアプリケーション・モジュールに一度接続されると、その後同じ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ページで1つのアプリケーション・モジュールIDしか定義していない場合は、値を変更できます。
注意: Webアプリケーション全体が単一のアプリケーション・モジュールIDを参照するか、またはランタイム・エラーが発生する可能性がある場合に非常に重要です。ID属性で指定されたアプリケーション・モジュールで、アプリケーションのセッション接続およびパッシベーションの動作が判断されます。
configname: (オプション)アプリケーション・モジュール接続を定義する構成名。ビジネス・コンポーネント・プロジェクトでアプリケーション・モジュールを右クリックし、「構成」を選択することにより、構成パラメータを表示できます。既存のクライアント・データ・モデルの定義を使用する場合は、この属性を省略し、かわりにdefinition
属性を設定します。「属性値」ダイアログには表示されません。これは、definition
属性がかわりに使用されるためです。
definition: クライアントの構成ファイル(.cpx
)で使用されるデータ・モデル定義名。各定義では、アプリケーション・モジュール名とアプリケーション・モジュール接続情報を定義する構成名を指定します。BC4Jクライアント・データ・モデル定義ウィザードを実行し、データ・モデル定義を作成します。「新規」ギャラリで「Business Component Client Data Model」を選択することにより、このウィザードを表示できます。プロジェクトにデータ・モデル定義がない場合は、この属性を省略し、かわりにconfigname
属性を使用してアプリケーション・モジュール接続情報を定義できます。「属性値」ダイアログには表示されません。これは、この値がBC4J JSPプロジェクトの .cpx
ファイルから取得されるためです。
lock: (オプション)JSPページにより共有されるアプリケーション・モジュールにセッション・ロックを獲得するかどうかを指定します。デフォルトはfalse
です。lockをtrue
に設定した場合、ロックが実行された後で、アプリケーション・モジュール・リソースを使用してロックを解放する必要があります。ロックが無制限に維持されると、アプリケーション・スレッドが不足します。
waittimeout: (オプション)アプリケーション・モジュールを参照するセッションCookieに関連するロックが、他のスレッドにより維持されている間、JSPページを実行するスレッドが待機する時間(ミリ秒)。デフォルトは、60000
ミリ秒です。スレッドがタイムアウトまでセッションCookieを解放しない場合、コール側のスレッドは終了します。BC4J JSPページでは、セッションCookieは、ビジネス・コンポーネントへの接続に使用されるアプリケーション・モジュールを参照します。
releasemode: (オプション)HTTPリクエストを処理するアプリケーション・モジュール・インスタンスの状態を決定するモード。JSPページからのHTTPリクエストに対するアプリケーション・モジュールの状態を処理する方法に応じて、Stateful
、Stateless
またはReserved
のいずれかの値を選択します。Stateful
がデフォルト値です。
Stateless
(ステートレス)は、ページ処理リクエスト間でアプリケーション・モジュール・インスタンスの状態を保持しません。インスタンスは、JSPページの終了後すぐに解放されます。このオプションは、フェイルオーバー・サポートを利用しない、または連携して動作する1セットのJSPページから構成されない単一のページに対して選択します。
Stateful
(ステートフル)は、ページ処理リクエスト間で、(アプリケーション・モジュールのpassivationtypeプロパティで指定した)データベースまたはファイルにおけるアプリケーション・モジュール・インスタンスの状態を保持します。これにより、アプリケーションは、単一のアプリケーション・モジュール・インスタンスを長期間使用せずにユーザーのデータを維持できます。ステートフル・モードは、HTTPセッションに対してフェイルオーバー・サポートを提供し、アプリケーション・モジュールが標準JDBC接続を使用する場合に望ましい選択肢です。ユーザーが特定のタスクを完了するために対話する個々のJSPページに対しても推奨されます。
Reserved
(リザーブ)では、HTTPセッションの間、アプリケーション・モジュール・インスタンスは解放されません。このモードは、ステートフル・アプリケーションと似ていますが、フェイルオーバーはサポートせず、アプリケーション・モジュールの再利用もできません。リザーブ・モードは、イントラネット・タイプの環境で使用すると便利です。このモードでは、ユーザーは、処理中のJSPページで「コミット」または「ロールバック」をクリックするといった操作でトランザクションの終了を通知することが必要になります。
username: (オプション)アプリケーション・モジュールの有効なユーザー名。ユーザー名が、BC4Jプロジェクトの .xcfg
ファイルで指定されたJDBC接続に定義されている場合、この属性は不要です。「属性値」ダイアログには表示されません。これは、BC4Jプロジェクトでこの値を定義すると想定されるためです。
password: (オプション)アプリケーション・モジュールの有効なパスワード。パスワードが、BC4Jプロジェクトの .xcfg
ファイルで指定されたJDBC接続またはJSPアプリケーションのプロパティ・ファイルに定義されている場合、この属性は不要です。「属性値」ダイアログには表示されません。これは、BC4Jプロジェクトでこの値を定義すると想定されるためです。
iiop_username: (オプション)アプリケーション・モジュールの有効なユーザー名。ユーザー名が、BC4Jプロジェクトの .xcfg
ファイルで指定されたIIOP接続に定義されている場合、この属性は不要です。「属性値」ダイアログには表示されません。これは、BC4Jプロジェクトでこの値を定義すると想定されるためです。
iiop_password: (オプション)アプリケーション・モジュールの有効なパスワード。パスワードが、BC4Jプロジェクトの .xcfg
ファイルで指定されたIIOP接続またはJSPアプリケーションのプロパティ・ファイルに定義されている場合、この属性は不要です。「属性値」ダイアログには表示されません。これは、BC4Jプロジェクトでこの値を定義すると想定されるためです。
例
次の例では、BC4Jデータ・タグでスクリプト可能な変数を使用し、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アプリケーション・モジュール・プールについて
bc4j.xcfgファイルでのBC4J JSPランタイム・プロパティの定義
単純なBC4J JSPページへのJSPデータ・バインドの追加
データ・タグを使用したアプリケーション・モジュールの状態管理