WebFacing アプリケーションは、他の Web アプリケーションからプログラマチックに呼び出すことができます。 これによって、WebFacing 生成ユーザー・インターフェースと既存の Web アプリケーションを統合する方法が提供されます。
WebFacing アプリケーションは URL から立ち上げられます。通常、URL はアプリケーションを開始するためにクリックするリンクとして表されます。WebFacing の変換時には、URL は index.jsp ファイルに書き込まれて、アプリケーションの配置後には アプリケーションを開始するためにクリックするリンクになります。しかし、WebFacing の URL は、コントローラー・サーブレットなどの他のプログラムによって動的に構成することもできます。それらの URL は、Web ページ上でクリックするリンクとして送り返されます。しかし、さらに重要なのは、他の Web アプリケーションで forward() および sendRedirect() メソッドでそれらを使用できることです。動的に決定された WebFacing URL を forward() および sendRedirect() メソッドで使用することは、コントローラー・サーブレットのようなプログラムが、使用するホスト、立ち上げる WebFacing プログラム、WebFacing プログラムに使用する CL コマンドの決定などのアクションやその他のアクションを実行できることを意味します。このようなアクションが完了すると、サーブレットは、すでに設定されているパラメーターを指定して適切な WebFacing アプリケーションを直接ユーザーに提供できます。
WebFacing の呼び出し方法を制御することによって、代替認証方式を使用することも可能です。すべてのユーザー認証は、現在 WebFacing が呼び出される前に、カスタム・サーブレットで実行できます。使用する認証メカニズムは、i5/OS® リソースにアクセスできるように、WebFacing アプリケーションに i5/OS ユーザー信任状を提供できるものでなければなりません。
以下に、プログラムの立ち上げに使用する CL コマンドを決定するための簡単な例を示します。
newURL = "WFInvocation.do?clcmd=call " + orderProgram;newURL は、forward() または sendRedirect() メソッドの forward または redirect URL として使用できます。
http://<hostname>:<port>/<application>/WFInvocation.do?clcmd=call%20ordentr
この例は、http://<hostname>:<port>/<application>/ で始まる完全な URL を示しています。newURL の値は、この後のストリングです。つまり、ストリング WFInvocation.do?clcmd=call%20ordentr です。このような例では、URL の最初の部分 http://<hostname>:<port>/<application>/ はアプリケーションのホスト、ポート、コンテキスト・ルートを表しています。 コントローラー・サーブレットが同じコンテキスト・ルートにある場合には、必ずしもサーブレットが URL 全体を決定する必要はありません。 ただし、必要であれば、完全に修飾された URL ストリングを構成するようにサーブレットを構成することができます。
clcmd パラメーターを使用するプログラマチック起動に許可される CL コマンド接頭部を指定できます。clcmd パラメーターを使用していて、許可する接頭部で始まらない値を指定しているプログラマチック起動の実行はブロックされます。デフォルトでは、実行する CL コマンドをオーバーライドするプログラマチック起動は許可されません。
WebFacing プラグイン・バージョン 5.1.2.2 およびそれ以前のバージョンから V6 へのプロジェクトのマイグレーションの場合は、すべての CL コマンドを実行できるように特殊値 *ALL が組み込まれます。
<context-param> <param-name>WFCLCMDAllowed0</param-name> <param-value>*ALL</param-value> </context-param>
clcmd パラメーターが使用されていない場合、または使用されている clcmd の値が既知である場合は、*ALL 値を除去して、以下のように値を指定する必要があります。
許可するコマンド接頭部を指定するには、WebFacing アプリケーションの web.xml ファイルのソースを編集してください。WFCLCMDAllowed と、その後に続く、各パラメーターを明確に区別する追加テキストから成るパラメーター名を追加してください。次に、それぞれが許可されているコマンドを指定するようにパラメーター値を追加してください。次の例は、CALL MYCMD および GO MYMENU で始まるすべてのコマンドを許可するものです。
<context-param> <param-name>WFCLCMDAllowed0</param-name> <param-value>GO MYMENU</param-value> <param-name>WFCLCMDAllowed1</param-name> <param-value>CALL MYCMD</param-value> </context-param>
必要に応じて、コンテキスト・パラメーターと値をさらに指定してください。
これは、CALL MYCMDisOK や CALL MYCMD PARAM(ONE) などの clcmd 値を許可しますが、CALL MY や CALL OTHERCMD などの値は許可しません。同様に、GO MYMENU の場合は、許可されるコマンドは指定されたストリングで始まるものでなければなりません。比較の場合は、大/小文字の区別は無視されます。
http://<hostname>:<port>/<application>/WFInvocation.do?clcmd=call%20ordentr&host=SYSTEM1&userid=WEBFACING&password=WEBFACING
注: この例では、ストリング <hostname> と <port> は、WebFacing アプリケーションが配置されているアプリケーション・サーバーのホスト名とポートを参照します。 <application> は、配置されたアプリケーションのコンテキスト・ルートです。 この例は、URL によって渡される以下の値を示しています。CL コマンドは call ordentr です。 5250 アプリケーションが置かれているホストは SYSTEM です。 ユーザー ID は WEBFACING です。 パスワードは WEBFACING です。複数のパラメーターは & で区切られます。
javax.servlet.RequestDispatcher's forward() メソッド | javax.servlet.http.HttpServletResponse's sendRedirect() メソッド |
---|---|
サーバー・サイド呼び出し。このメソッドは、他のリソースを呼び出し、その出力をリトリーブして、それをクライアントに戻します。 | HTTP 302 状況コードをブラウザーに送ります。ブラウザーは、リソースの URL に自動的に再接続します。この場合には、ブラウザーは、出力が他のリソースからきたことを認識します。 |