アプリケーション・デプロイメント
Forms Developerでアプリケーションを作成したら、そのアプリケーションをWeb上に配布できます。Oracle Forms Servicesは、指定されたURLによってOracle Fusion Middlewareのアプリケーションにアクセスします。
次に、そのURLでHTTP Listenerにアクセスし、そこでListener Servletと通信します。リスナー・サーブレットは、Forms ServicesのセッションごとにFormsランタイム・プロセス(Windowsではfrmweb.exe
、UNIXとLinuxではfrmweb
)を起動します。
Forms Servicesが実行される仕組みの詳細は、「Oracle Forms Servicesのアクション」を参照してください。
内容は次のとおりです。
パラメータの指定
Oracle Forms Servicesアプリケーションにパラメータ値を事前定義するには、2つの方法があります。次の方法でパラメータを定義できます。
- Fusion Middleware Controlの「Web構成」ページのデフォルト・セクションで、アプリケーション設定を編集します。デフォルトの構成セクションには、Oracle Forms Servicesで使用するデフォルト値が表示されます。
- 名前を付けたアプリケーションの構成セクションで、他のシステム・パラメータとユーザー・パラメータの値を管理(追加、編集、コピー、削除)します(「Fusion Middleware Controlでの構成セクションの作成」を参照)。たとえば、
myApp
用に作成した構成セクションで、次の表に示すパラメータおよびその値を追加または変更できます。
「Web構成」の名前付き構成セクションで指定したパラメータは、デフォルト・セクションの設定をオーバーライドします。
ノート:
システム・パラメータは、ユーザー・パラメータとは異なりURLにおいてオーバーライドできません。Fusion Middleware Controlでの構成セクションの作成
アプリケーションのデプロイのステップ2で作成した構成セクションで、Oracle Forms Servicesアプリケーションのパラメータを指定できます。「Web構成」ページのデフォルト・セクションで使用可能なアプリケーションおよびシステム・パラメータを任意で指定できます。
たとえば、lookAndFeel
パラメータをoracle
の値に設定し、「適用」をクリックすると、アプリケーションのルック・アンド・フィールをOracleのルック・アンド・フィールに設定できます。
また、名前付き構成セクションのデフォルトのパラメータ値をオーバーライドすることもできます。たとえば、アプリケーションへの接続情報を<username>/<password>@orcl
として事前定義するには、userid
のパラメータ値を設定する必要があります。これには、名前を付けた構成セクションでuserid
のパラメータ値を<username>/<password>@orcl
に変更します。
編集可能な他のパラメータは、「Forms構成パラメータ」を参照してください。
Oracle Forms Servicesアプリケーションへのアクセスに使用するURLの編集
Oracle Forms ServicesアプリケーションにアクセスするURLに制限のないパラメータを直接入力できます。前述の例の場合、構成ファイルにform
パラメータを指定するかわりに、URLに次のように入力することもできます。
http://example.com:9001/forms/frmservlet?config=my_application&form=hrapp
アンパサンド(&)を使用すれば、フォームと名前を付けた構成パラメータの組合せをコールすることができます。前述の例では、"my_application"で指定したパラメータ設定を使用して、フォーム"hrapp"をコールしています。
ノート:
URLで指定したパラメータは、構成セクションで設定したパラメータをオーバーライドします(「アプリケーションのURLセキュリティの管理」を参照)。ランフォーム・パラメータにおける特殊文字の指定
ランフォーム・パラメータに渡される値に特殊文字が含まれている場合は、特定の考慮事項が適用されます。この項では、こうした考慮事項について説明し、今回のリリースのデフォルト動作と前リリースのデフォルト動作を比較します。
ランフォーム・パラメータは、テンプレートHTMLファイルのserverArgsアプレット・パラメータで指定されるパラメータです。テンプレートHTMLファイルのserverArgsパラメータで指定された値は、変数の置換後に、コマンドライン・パラメータ文字列と呼ばれることもあります。これは、空白で区切られた一連のname=value
のペアで構成されます。この名前には、英数字またはアンダースコアのみが使用可能です。name=valueペアの値の部分には、任意の文字列を使用できます。
現行リリースのデフォルト動作
ランフォーム・パラメータの値は、次に示す3つの場所のいずれかで指定できます。
- テンプレートHTMLファイル(
base.htm
など)のserverArgs
パラメータの値。 - (1)の変数参照を(直接または再帰的に)置換する、構成ファイル(
formsweb.cfg
など)で指定された変数の値。通常、これらの値は、Fusion Middleware Controlを使用して管理します。「Forms Servicesの構成」を参照してください。 - (1)または(2)の変数参照を直接置換する、URLの属性値。
(3)では、URL構文規則(ブラウザおよびアプリケーション・サーバーで実行される)により、URLエスケープ・シーケンスとして特定の文字を入力する必要があります(計3文字のうち、%に続く2桁の16進数字は文字のASCII値を表します)。
この要件には、%
文字自体が含まれます(%25
として入力する必要があります)。さらに、現在Oracle Forms Servicesでは、ブラウザおよびアプリケーション・サーバーでエスケープなしに引用符を入力できる場合でも、引用符('"')は%22
として入力する必要があります。
URL構文規則では、(URLエスケープ・シーケンス%20
の代替として)空白を+
として入力することも許可されています。ただし、otherparams
構成パラメータの値では、+
は特別に扱われ、ランフォーム・パラメータの値に埋め込まれた空白を示すのとは対象的に、name=valueペアを分割します。
たとえば、ランフォーム・アプリケーションにユーザー・パラメータparam1
とparam2
が指定されており、これらのパラメータに「a b」および「c d」を割り当てる場合は、次の文字列をURLに取り込みます。
&otherparams=param1=a%20b+param2=c%20d
(1)および(2)のように、テンプレートHTMLファイルまたは構成ファイルでランフォーム・パラメータを指定する場合、Formsでは状況によってURLエスケープ・シーケンスが必要とされる場合やURLエスケープ・シーケンスの使用が許可される場合、また許可されない場合があります。
ランフォーム・パラメータの値の外部では、URLエスケープ・シーケンスは使用できません。たとえば、name=valueペアの=
は、常にそのまま=
として指定する必要があります。隣接する2つのname=valueペアを区切る空白は、常にそのまま" "(シングル・スペース文字)として指定する必要があります。
ランフォーム・パラメータの値の内部では、空白(' ')をURLエスケープ・シーケンス(%20
)として指定する必要があります。HTMLデリミタ文字(構成ファイルで指定)もURLエスケープ・シーケンスとして指定する必要があります。また、(1)のようにランフォーム・パラメータがテンプレートHTMLファイルで指定されている場合は、引用符('"')をURLエスケープ・シーケンス(%22)として指定する必要があります。
その他の7ビットASCII文字も、URLエスケープ・シーケンスとして指定する場合があります。ただし、この指定は必須ではありません(次に示すとおり、%
では必要な場合があります)。%
文字には、特定の追加制限が適用されます。これには次のものがあります。
- HTMLデリミタが
%
(デフォルト)である場合、ランフォーム・パラメータの値内の%
の出現をエスケープする(%25
として指定する)必要があります。(HTMLデリミタ文字のエスケープの必要性については、前述のとおりです)。さらに、7ビットのASCII値を表す2桁の16進数字(最初の文字が0から7の2桁の16進数字)で変数名を開始することはできません。 - HTMLデリミタが
%
でなければ、その直後に8進数字と16進数字が続く場合、%
の出現はエスケープする必要があります。%の他の出現もエスケープすることをお薦めしますが、これは必須ではありません。
ノート:
前リリースで作成した既存のテンプレートHTMLファイルまたは構成ファイルを所有し、そのファイルで%以外のHTMLデリミタが使用され、ランフォーム・パラメータの値に%が含まれている場合は、この推奨事項を無視することもできます。前リリースの動作
リリース9.0.4以降の動作は、テンプレートHTMLファイルと構成ファイルのランフォーム・パラメータの値では引用符をエスケープ(%22)する必要がある点を除いて、現行リリースと同じです。
9.0.4より前のリリースでは、テンプレートHTMLファイルや構成ファイルで指定したランフォーム・パラメータの値にはURLエスケープ・シーケンスを使用できませんでした(前述の(1)と(2)の場合)。3つのすべての場合において、特定の特殊文字、特に空白、引用符、アポストロフィを指定することは困難または不可能でした。さらに、パラメータ値には、値をランフォームに渡す前に特定の変換が適用されました。特に顕著なのは値がアポストロフィで開始および終了する場合で、通常これらのアポストロフィは削除されました。ただし、こうした変換は明確に定義されたものではなく、Web環境とクライアント/サーバー環境の間には差異がありました。
現行リリースでの前リリースの動作取得
使用しているアプリケーションが前リリースの動作に依存している場合は、構成ファイルでescapeparams
変数の値をFalse
に設定するだけで、現行リリースで前リリースの動作を取得できます(この作業はFusion Middleware Controlで実行します)。
以前の動作の取得を選択したアプリケーションに限定する場合は、異なる構成セクションのescapeparams
変数に異なる値を指定できます。以前の動作を必要とするアプリケーションでは、escapeparams
変数をFalse
に設定した構成セクションを指定します。新しい動作を必要とする(または許容する)アプリケーションでは、escapeparams
変数をTrue
に設定した構成セクションを指定します。
テンプレート・ファイルの考慮事項
独自のテンプレート・ファイルを作成する場合は、次の点を考慮してください:
escapeparams
変数(%
がHTMLデリミタ文字の場合は文字列%escapeparams%
)への参照がserverArgs
アプレット・パラメータ値の最初の部分に表示され、空白が続くように設定することをお薦めします。例については、付属のbase.htm
ファイルを参照してください。escapeparams
変数への参照が、テンプレート・ファイルの他の部分に表示されないようにしてください。serverArgs
アプレット・パラメータの値を引用符ではなくアポストロフィで囲む場合は、テンプレート・ファイル内のランフォーム・パラメータの値の内部でアポストロフィをエスケープする(%27)必要があります。引用符にはエスケープ・シーケンスは不要です。serverArgs
アプレット・パラメータ値の先頭からescapeparams
変数への参照を省略することが可能です。これにより、構成ファイルでescapeparams
変数に指定した値に関係なく、以前のリリースの動作が得られます。
静的HTMLページの考慮事項
ノート:
静的HTMLまたはJNLPの使用はお薦めしません。Formsアプリケーションに対するコールはすべて、Formsサーブレット(frmservlet
)を介してルーティングすることをお薦めします。これを行わないと、予期しない動作が発生することがあります。
基本的な規則として、静的HTMLがForms Servletで生成されたHTMLのように見える必要があります。具体的には、serverArgs
アプレット・パラメータの値を文字列escapeparams=true
で開始する必要があります(大/小文字の区別なし)。
さらに、serverArgs
アプレット・パラメータ値の各name=valueペアの値部分で、次の表に示すURLエスケープ・シーケンスによって特定の文字を指定する必要があります。
表-3 静的HTMLページのURLエスケープ・シーケンス
エスケープが必要な文字 | URLエスケープ・シーケンス |
---|---|
改行' \n ' | %0a |
空白' ' | %20 |
引用符' " ' | %22 |
パーセント' % ' | %25 |
アポストロフィ' ' ' | %27 |
左カッコ' ( ' | %28 |
右カッコ' ) ' | %29 |
name=value
ペアの値部分に使用されている他の7ビットASCII文字をエスケープすることもできます。
静的HTMLでのserverArgs
アプレット・パラメータの書式の例を次に示します。この例は、my formという名前のフォームに関するものです。ここでは、値foo'barがユーザー定義パラメータmyparam
に渡されます。
<PARAM NAME="serverArgs" VALUE="escapeparams=true module=my%20form myparam=foo%27bar">