BEA Logo BEA Tuxedo Release 8.0

  BEA ホーム  |  イベント  |  ソリューション  |  パートナ  |  製品  |  サービス  |  ダウンロード  |  ディベロッパ・センタ  |  WebSUPPORT

 

   Tuxedo ホーム   |   BEA Jolt   |   先頭へ   |   前へ   |   次へ   |   目次   |   索引

 


TRANSFER リクエストの呼び出し方

この節では、TRANSFER リクエストの実行時の状況について説明します。ただし、必要な手順のみを説明しており、すべての手順は説明していません。

Jolt セッション・プール・マネージャを初期化する

まず、クライアントのブラウザを使用して、Jolt ASP Connectivity for BEA Tuxedo のクラスがインストールされている Web サーバに接続します。ダウンロードする最初のページは、tellerForm.asp (次の図の tellerForm.asp ページの例を参照) です。「準備チェックリスト」で、この teller サンプルがすでにインストールされている場合、このページの URL は次のようになっています。

http://<web-server:port>/teller/tellerForm.asp

注記 Web サーバの構成によっては、ポート番号の使用は必要ありません。ほとんどの場合、URL に「:port」を追加する必要はありません。

tellerForm.asp ページの例


 

tellerForm.asp ページには、Jolt セッション・プール・マネージャを初期化する際に必要な VBScript プロシージャが含まれています。初期化コードは、ASP Script ブロックに入っています。このコードは、このコード・ブロックを、クライアントに送信するのではなくサーバ上で実行するよう Web サーバに命令します。

tellerForm.asp : Jolt セッション・プール・マネージャを初期化する

<%
'// テンプレートを初期化しテンプレートをキャッシュします。
Call web_initSessionMgr(Null)
Call web_cacheTemplates()
%>

VBScript プロシージャの web_initSessionMgr() は、Jolt セッション・プールを確立する別の VBScript プロシージャを呼び出します。この Jolt セッションは、Web サーバ内の Jolt ASP Connectivity for BEA Tuxedo と BEA Tuxedo アプリケーション内に常駐する Jolt サーバの間に確立されます。呼び出されるプロシージャの 1 つは、web_start() です。web_start.inc ファイルにあるこのプロシージャは、「準備チェックリスト」の teller アプリケーションのインストールの際に編集されている必要があります。

web_cacheTemplates() プロシージャは、さまざまな HTML テンプレートをメモリ・キャッシュに読み込みます。この手順は必須ではありませんが、この操作によってパフォーマンスが向上します。

tellerForm.asp:ユーザが TRANSFER サービスを選択できるようにする

<INPUT TYPE="button" VALUE="Transfer" 
onClick="window.location='transferForm.htm'">

上記の HTML セグメントは、「Transfer」という名前のボタンを表示します。このボタンが選択されると、ブラウザは transferForm.htm ページをロードします。

クライアントから TRANSFER リクエストを送信する

次の図の「transferForm.htm の例」のフォームは、transferForm.htm によって生成されます。このページは、入力用のフォームを表示します。このページは、3 つのテキスト・フィールド (2 つの口座番号の入力フィールドとドル金額の入力フィールド) と、TRANSFER サービスを呼び出すときに使用するボタンで構成されています。

transferForm.htm の例


 

次のコード・セグメントは、このページの主要な HTML エレメントを示しています。次のリスト内の太字のエレメントは、表の「主要な HTML エレメントとその説明」のエレメントに対応しています。

transferForm.htm:TRANSFER フォーム

<FORM NAME="teller" ACTION="tlr.asp" METHOD="POST">
<TABLE>
<TR><TD ALIGN=RIGHT>From Account Number: </TD>
<TD><INPUT TYPE="text" NAME="ACCOUNT_ID_0"></TD></TR>
<TR><TD ALIGN=RIGHT>To Account Number: </TD>
<TD><INPUT TYPE="text" NAME="ACCOUNT_ID_1"></TD></TR>
<TR><TD ALIGN=RIGHT>Amount: $</TD>
<TD><INPUT TYPE="text" NAME="SAMOUNT"></TD></TR>
</TABLE>
<CENTER>
<INPUT TYPE="hidden" NAME="SVCNAME" VALUE="TRANSFER">
<INPUT TYPE="submit" VALUE="Transfer">
<INPUT TYPE="reset" VALUE="Clear">
</CENTER>
</FORM>

主要な HTML エレメントとその説明

エレメント

説明

ACTION="tlr.asp"

[Submit] ボタンをクリックすると、このフォームの内容が Web サーバ上の tlr.asp というページに送信され、処理されます。

NAME="ACCOUNT_ID_0"

複数のオカレンスを持つフィールドの使用を示します。TRANSFER サービスは、2 つの口座番号の入力を待ちます。両者とも「ACCOUNT_ID」というフィールド名です。フィールド名の末尾に下線 (_) とオカレンス番号 を付ける規則を使用し (例: _0、 _1)、フィールド名とオカレンスを Web サーバ上のプログラムに渡します。

NAME="SAMOUNT"

単一のオカレンスを持つ入力フィールドの使用を示します。この例では、フィールド名の末尾には何も付きません。


 

この例で使用されている HTML フォームのフィールド名は、TRANSFER サービスで使用される BEA Tuxedo のフィールド名と完全に一致しています。これは必須ではありませんが、このように BEA Tuxedo と同じフィールド名を使用すると、入力項目を BEA Tuxedo フィールド名にマッピングする必要がなくなるため、サーバ上の処理が簡単になります。これは、Jolt ASP Connectivity for BEA Tuxedo クラスによって実行されます。

非表示の SVCNAME フィールドには、「TRANSFER」という値が指定されます。このフィールドはクライアント・フォームには表示されませんが、リクエストの一部として Web サーバに送信されます。VBScript プログラムは、どの BEA Tuxedo サービスを呼び出すか (この場合は TRANSFER サービス) を決定するために、このフィールドの値を取得します。

[From Account Number][To Account Number]、および [Amount] フィールドに入力します。BankApp では、10000 および 10001 が口座番号として有効です。[Transfer] ボタンを押します。フォームで入力されたデータは、Web サーバに送信され、このフォームの ACTION フィールドで指定されている tlr.asp で処理されます。

リクエストを処理する

Web サーバは、TRANSFER リクエストを受信すると tlr.asp プログラムを実行します。クライアント・リクエストは、Web サーバで Request オブジェクトに変換されます。Request オブジェクトは、このフォームに入力されたすべてのデータと非表示フィールドなどのほかのフォーム・データを含むメンバを持っています。Web サーバは、この Request オブジェクトを実行プログラムで使用できるようにします。

tlr.asp プログラムは、VBScript のみを含みます。このプログラムは、最初に Jolt セッション・プール・マネージャが初期化されているかどうかを確認します。

次のリスト内のコード例は、この初期化チェックの実行と、セッション・プールが初期化されていない場合に HTML のエラー・ページを返すことを示しています。

tlr.asp:Jolt セッション・プール・マネージャが初期化されているかどうかを確認する

<%
If Not IsObject(Application("mgr")) Then
%>
<HTML>
<HEAD><TITLE>Error</TITLE></HEAD>
<BODY><CENTER>
<H2>Session Manager is not initialized</H2>
<P>Make sure that you access the correct HTML
</CENTER></BODY>
</HTML>
<%
End If
%>

セッション・プールが初期化されている場合、このプログラムはリクエストの処理を続行します。プログラムは、次のリストで示すように、セッション・プール・マネージャからセッションを探し出します。

tlr.asp:セッションを探し出す

Set pool = Application("mgr").getSessionPool(Null)

有効なセッションを探し出すと、プログラムは、結果をクライアントに返すために使用する HTML テンプレートを取得します。この例では、テンプレートは初期化セクションでキャッシュされています。取り出されるテンプレートは、呼び出されているサービスの名前である Request("SVCNAME") によって識別されます (次のリストを参照)。

tlr.asp:キャッシュされている HTML テンプレートを取り出す

'// レスポンス・テンプレートを選択します
If IsEmpty(Application("templates")) Then
Set template = Server.CreateObject("BEAWEB.Template")
Else
Select Case Request("SVCNAME")
Case "INQUIRY"
Set template = Application("templates")(INQUIRY)
Case "DEPOSIT"
Set template = Application("templates")(DEPOSIT)
Case "WITHDRAWAL"
Set template = Application("templates")(WITHDRAWAL)
Case "TRANSFER"
Set template = Application("templates")(TRANSFER)
End Select
End If

次のリストの「tlr.asp:BEA Tuxedo サービスの呼び出し」に示すような BEA Tuxedo サービスを呼び出します。この例では、request オブジェクトからの入力データが、セッションの call() メソッドに渡されます。call() メソッドは、ASP 組み込みの Request オブジェクトを入力として使用します。call() メソッドの結果は、output オブジェクトと iodata 配列に格納されます。

tlr.asp:BEA Tuxedo サービスの呼び出し

Set output = pool.call(Request("SVCNAME"), Null, Nothing)
Set iodata(1) = output

BEA Tuxedo サービスを呼び出した後、output オブジェクトと iodata 配列の第 2 要素に、このサービス呼び出しの結果が入っています。

注記 フォームで最初に指定されるフィールド名と BEA Tuxedo サービスのパラメータ名が一致しているため、Request オブジェクトをそのまま call() メソッドで使用することができます。これらの名前が一致しない場合は、call() メソッドを呼び出す前に、各サービス・パラメータに対して「名前 = 値」の形式で入力配列を作成します。

クライアントへ結果を返す

この段階では、クライアントに結果は返されていません。最後の手順では、このサービス呼び出しの結果を含む HTML ページをクライアントに返します。この HTML ページは、テンプレートにサービス呼び出しが返すデータをマージしたものです (リストの「tlr.asp:BEA Tuxedo サービスの呼び出し」を参照)。

テンプレート・ファイルには、呼び出しに固有なさまざまなデータのプレースホルダが入っています。これらのプレースホルダは、<%=NAME%> という特殊なタグによって識別されます。次のリスト内に示すコード例は、インデックスを使用しているパラメータ名のどのオカレンスが使用されているかを示します。たとえば、 ACCOUNT_ID[0] は、ACCOUNT_ID フィールドの最初のオカレンスを指定します。

transfer.temp:TRANSFER の結果のプレースホルダ

<TABLE BORDER=1>
<TR><TD></TD><TD ALIGN=CENTER><B>Account #</B></TD>
<TD ALIGN=CENTER><B>Balance</B></TR>
<TR><TD ALIGN=RIGHT><B>From:</B></TD><TD><%=ACCOUNT_ID[0]%></TD>
<TD><%=SBALANCE[0]%></TR>
<TR><TD ALIGN=RIGHT><B>To:</B></TD><TD><%=ACCOUNT_ID[1]%></TD>
<TD><%=SBALANCE[1]%></TR>
</TABLE>

テンプレートの中のプレースホルダを、サービス呼び出しが返したデータの実際の値に置換する場合は、次のリストに示す Template オブジェクトの eval() メソッドを使用します。このメソッドは、テンプレート・ファイルのプレースホルダと結果データの同名のフィールドを比較し、一致するデータでプレースホルダを置換します。結果 (output オブジェクト) の有効性チェックは、次のリスト内に示す方法で実行されます。output オブジェクトがない場合は、エラー・テンプレート・ページが返されます。

tlr.asp:テンプレートの処理

path = Application("templatedir")
If (Not IsObject(output)) Or (output is Nothing) Then
Call template.evalFile(path & "¥nosession.temp", Null)
Elseif output.noError() Then
Call template.eval(iodata)
Elseif output.applicationError() Then
Call template.evalFile(path & "¥error.temp", iodata)
Else
'// System error
Dim errdata(0)
Set errdata(0) = Server.CreateObject("BEAWEB.TemplateData")
Call errdata(0).setValue("ERRNO", output.getError())
Call errdata(0).setValue("ERRMSG", output.getStringError())
Call template.evalFile(path & "¥syserror.temp", errdata)
End If

注記 iodata 配列には、入力リクエストとサービス呼び出しの結果が含まれています。iodata 配列は、結果ページに入力データを含ませたい場合に便利です。

テンプレートが処理されると、次の図のような HTML の結果ページがクライアントに返されます。

tlr.asp 結果ページ


 

 

先頭へ戻る 前のトピックへ 次のトピックへ