bea ホーム | 製品 | dev2dev | support | askBEA
BEA Logo Tuxedo
 ドキュメントのダウンロード   サイトマップ   用語集 
検索
0

Jolt

 Previous Next Contents Index View as PDF  

Jolt ASP Connectivity for BEA Tuxedo を使う

Jolt ASP (Active Server Pages) Connectivity for BEA Tuxedo は、動的な HTML ページを処理したり、作成したりするための使いやすいインターフェイスを提供します。BEA Tuxedo サービスにアクセスするために Common Gateway Interface (CGI) トランザクション・プログラムの書き方を学ぶ必要はありません。

ここでは、次の内容について説明します。

 


主な特徴

Jolt ASP Connectivity for BEA Tuxedo は、Jolt クラス・ライブラリを拡張したものです。また、スクリプト言語を使って BEA Tuxedo のサービスやトランザクションを Web サーバから呼び出すことができます。

このアーキテクチャには、以下のような利点があります。

注記 ASP Connectivity for BEA Tuxedo では、非同期通知は利用できません。非同期通知をサポートしたい場合は、RETAINED モードの接続を使用する Jolt 対応 Java クライアント (アプレット) を開発することをお勧めします。

 


Jolt ASP Connectivity for BEA Tuxedo の仕組み

Jolt ASP Connectivity for BEA Tuxedo のアーキテクチャには、セッション、セッション・プール、セッション・プール・マネージャという 3 つの主要なコンポーネントがあります。セッション・オブジェクトは、BEA Tuxedo システムとの接続を表します。セッション・プールは、Web サーバと BEA Tuxedo システム間の物理的な接続を表します。また、セッション・プールは、セッションと HTTP リクエストを関連付けます。

セッション・プール・マネージャは、セッション・オブジェクトを管理します。各セッション・オブジェクトは、一意なセッション識別子を持ちます。

Jolt ASP Connectivity for Tuxedo は以下のように動作します。

  1. Web アプリケーションが初期化されていない場合、Web アプリケーションはセッション・プール・マネージャを初期化し、セッション・プールを生成して、Jolt サーバとのセッション (接続) を確立します。

  2. Web アプリケーションは、サービス要求を受け取ると、セッション・プール・マネージャからセッション・プール・オブジェクトを取得します。セッション・プールは、未処理の呼び出し要求の数が最も少ない (least busy) セッションを用いてサービス呼び出しを実行します。

  3. 選択したセッションが Jolt サーバによって切断された場合、セッション・プール・オブジェクトは新しいセッションを再び開始するか、またはほかのセッションにリクエストを渡します。セッション・プール・マネージャがセッションを獲得できない場合は、セッション・オブジェクトとしてヌルが返されます。

次の図に、ASP Connectivity for BEA Tuxedo のアーキテクチャを示します。

図 8-1 Jolt ASP Connectivity for BEA Tuxedo のアーキテクチャ


 

SessionPool およびSessionPoolManager クラスの詳細については、オンライン・マニュアルの『BEA Jolt API リファレンス』を参照してください。

 


ASP Connectivity for BEA Tuxedo ツールキット

ASP Connectivity for BEA Tuxedo ツールキットは、Jolt の Java クラス・ライブラリを拡張したものです。このツールキットにより、Microsoft Active Server などの Web サーバで Jolt クライアント・クラス・ライブラリが使用できるようになります。また、HTML のクライアントまたはブラウザと BEA Tuxedo アプリケーションをつなぐインターフェイスが提供されます。

このソフトウェアに付属するサンプルは、INQUIRY、WITHDRAWAL、DEPOSIT、TRANSFER の 4 つのサービスをサポートします。この節では、BEA Tuxedo BankApp アプリケーションの TRANSFER サービスを利用する場合の HTML クライアント・インターフェイスの使用手順を説明します。TRANSFER サービスは、複数のオカレンスを持つパラメータの使い方を示します。この章では、TRANSFER サービスの使い方のみを説明します。

 


Jolt ASP Connectivity for BEA Tuxedo の使い方

この章で説明するすべてのサンプルは、Jolt ソフトウェアに含まれています。この節では、これらのサンプルのコードの一部を使用してツールキットの使い方を説明します。

このソフトウェアに付属するサンプルは、INQUIRY、WITHDRAWAL、DEPOSIT、TRANSFER の 4 つのサービスをサポートします。この章では、BEA Tuxedo BankApp アプリケーションの TRANSFER サービスを利用する場合の HTML クライアント・インターフェイスの使用手順を説明します。TRANSFER サービスは、複数のオカレンスを持つパラメータの使い方を示します。この章では、TRANSFER サービスの使い方のみを説明します。

注記 この章では、Microsoft IIS および VBScript と共に ASP Connectivity for BEA Tuxedo を使用する方法について説明します。

以降の節で示す情報を活用するためには、以下の知識が必要です。

 


ASP for BEA Tuxedo の使い方についての概要

ASP Connectivity for BEA Tuxedo の使い方を学ぶには、以下の手順に従ってください。

  1. 準備チェックリストの内容を確認します。

  2. TRANSFER サービスの概要の内容を確認します。

  3. TRANSFER リクエストの呼び出し方の手順に従います。

 


準備チェックリスト

「TRANSFER リクエストの呼び出し方」を始める前に、このチェックリストの内容を確認します。

注記 この準備チェックリストは、Microsoft Active Server Pages 用です。また、BEA Tuxedo と Jolt Server がホスト・マシンにインストールされていること、および Microsoft IIS がインストールされているマシンに BEA Jolt クライアントがインストールされていることが前提となっています。

Jolt サーバを実行する Tuxedo ホスト

  1. クライアント・マシンにインストールされているブラウザがサポートされているかどうかを確認します。クライアント・マシンは、BEA Tuxedo 環境へ接続される Web サーバにネットワーク接続されている必要があります。

  2. BEA Tuxedo と BEA Tuxedo のサンプル例である BankApp を構成し、ブートします。

    1. TRANSFER サービスが使用可能であることを確認します。

    2. この作業を完了するための情報については、BEA Tuxedo のマニュアルを参照してください。

  3. Jolt を起動するように BEA Tuxedo アプリケーションを設定します。Jolt サーバの構成方法については 『BEA Tuxedo システムのインストール』を参照してください。

    1. Jolt サーバ・リスナ (JSL) に関連付けられたホスト名とポート番号を書き留めます。

    2. TRANSFER サービスが Jolt リポジトリに定義されているかどうかを確認します。

    3. Jolt リポジトリ・エディタを使用して、TRANSFER サービスがアクセス可能かどうかをテストします。次に、Jolt リポジトリ・エディタを使用して TRANSFER サービスをエクスポートし、TRANSFER サービスが Jolt クライアントからアクセス可能かどうかをテストします。

Jolt クライアントと Microsoft IIS を実行するマシン

  1. Microsoft IIS SDK の Microsoft Java Component Framework がインストールされていない場合は、ここでインストールします。

    Windows NT 4.0 プラットフォームでは、Microsoft NT Option Pack 4.0 の標準のインストールを選択した場合、この SDK はインストールされません。インストーラで [SHOW SUBCOMPONENTS] オプションを選択して、IIS の追加のオプションを表示します。SDK を参照してインストールします。

    Windows NT または 2000 では、Microsoft SDK for Java の Microsoft Java Component Framework クラスを入手することもできます。Microsoft Java Component Framework ファイルをダウンロードするには、次の手順に従います。

    1. Web ブラウザを開いて Microsoft の Web サイトにアクセスします。

      http://www.microsoft.com

      「Microsoft SDK for Java」という文字列を検索します。

      または、次のダウンロード・ページに直接移動します。

      http://www.microsoft.com/java/download/dl_sdk40.htm

    2. Microsoft SDK for Java 4.0 for Windows をダウンロードして、マシンにインストールします。

  2. java¥Trustlib ディレクトリに新しいディレクトリ aspcomp を作成します。Trustlib ディレクトリは通常 %windir%¥java¥TrustLib にあります。Framework ファイルはパッケージ aspcomp に作成されるので、Java 仮想マシン (JVM) はこのディレクトリを検索します。

  3. Microsoft Java Component Framework クラス・ファイルを java¥TrustLib¥aspcomp ディレクトリにコピーします。*.class ファイルのみをコピーします。次に例を示します。
 ...¥Program Files¥Microsoft SDK for Java 4.0¥Samples¥ASP¥aspcomp> copy *.class C:¥WINNT¥java¥TrustLib¥aspcomp

  1. jolt.jar ファイルを %windir%¥java¥Trustlib ディレクトリにコピーします。次に、jar コマンドを使って jolt.jar をアンパックし、Jolt クラス・ファイルを java¥TrustLib ディレクトリに作成します。Jolt クラスは名前が BEA で始まるパッケージに作成されるので、JVM は java¥Trustlib¥bea サブディレクトリを検索します。

  2. joltasp.jar ファイルを %windir%¥java¥Trustlib ディレクトリにコピーします。次に、jar コマンドを使って joltasp.jar をアンパックし、Jolt Pool ASP クラス・ファイルを java¥Trustlib ディレクトリに作成します。Jolt Pool ASP クラスは名前が BEA で始まるパッケージに作成されるので、JVM は java¥Trustlib¥bea¥ サブディレクトリを検索します。

  3. Jolt のインストール・ディレクトリから wasreg.cmd ファイルを取得します。wasreg.cmd を実行して、BEA Jolt ASP クラスを BEAJOLTPOOL ActiveX コンポーネントとして登録します。この操作によって、BEAJOLTPOOL コンポーネントが Microsoft ASP スクリプトからアクセス可能になります。Java クラスの ActiveX コンポーネントとしての登録を解除するには、BEA Jolt で用意されている wasunreg.cmd スクリプトを実行します。

    javareg/register が実行するのはレジストリ・エントリの作成だけなので、登録は手動またはセットアップ・プログラムでも行えます。

    wasreg.cmd および wasunreg.cmd スクリプトは JavaReg ユーティリティを使用します。このユーティリティは Visual J++ または Microsoft SDK for Java で利用できます。

  4. ASP クラスを ActiveX コンポーネントとして登録したら、Jolt ASP Connectivity for BEA Tuxedo ソフトウェアに付属のサンプル・アプリケーションをテストできます。

    1. %tuxdir%¥udataobj¥jolt¥examples¥asp¥bankapp ディレクトリをデフォルトの Microsoft IIS ディレクトリにコピーします。

    2. 実行環境に合わせて bankapp.properties ファイルを編集します。

    3. ブラウザから次の URL を入力して、アプリケーションを起動します。

      http://web-server:port/bankapp/tellerForm.asp

    注記 ポート番号はオプションです。ポートを指定するかどうかは、Web サーバのコンフィギュレーションによって異なります。ほとんどの場合、この URL にポート番号を含める必要はありません。

  5. 次の表は、このサンプル・アプリケーションのファイルの一覧です。これらのファイルは「TRANSFER リクエストの呼び出し方」で参照する重要なファイルです。Jolt サンプルのディレクトリ (TUXDIR¥udataobj¥jolt¥examples¥asp) に格納されています。


     

 


TRANSFER サービスの概要

BankApp の TRANSFER サービスは、2 つの口座の間で資金を移動します。このサービスは 2 つの口座番号と入力金額をとり、2 つの残高 (各口座に 1 つ) を返します。さらに、アプリケーションまたはシステムのエラーが発生した場合は、エラー・メッセージを返します。

TRANSFER は、WITHDRAWAL と DEPOSIT を単一のトランザクションとして実行します。このトランザクションはサーバ上で生成されるため、クライアントはトランザクションを生成する必要はありません。

クライアント・インターフェイスは、必要なデータ (口座番号とドル金額) を入力するフォームが表示された HTML ページです。このデータは、POST リクエストとして Web サーバに送信されます。

Web サーバでは、このリクエストは VBScript Active Server Page を使用して処理されます。このプログラムは、リクエストから入力データ・フィールドを抽出し、Jolt ASP Connectivity for BEA Tuxedo クラス・ライブラリで使用できるようにフォーマットし、BankApp アプリケーションの TRANSFER サービスにリクエストを送信します。TRANSFER サービスは、トランザクションの結果を返します。結果はプログラムに返され、動的に作成された HTML ページにマージされます。このページは、Web サーバのインフラストラクチャを介してクライアントに返されます。

この章を読み終えたら、必要な HTML ページとサーバ・サイド VBScript ロジックを実行して TRANSFER を実行してみてください。

 


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」を追加する必要はありません。

図 8-2 tellerForm.asp ページの例


 

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

コード リスト8-1 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 テンプレートをメモリ・キャッシュに読み込みます。この手順は必須ではありませんが、この操作によってパフォーマンスが向上します。

コード リスト8-2 tellerForm.asp :ユーザが TRANSFER サービスを選択できるようにする

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

上記の HTML セグメントは、「Transfer」という名前のボタンを表示します。このボタンが選択されると、ブラウザは transferForm.htm ページをロードします。このページは、TRANSFER サービスで必要なデータを入力するためのフォームを表示します。

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

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

図 8-3 transferForm.htm の例


 

次のコード・セグメントは、このページの主要な HTML エレメントを示しています。次のコード例で強調表示されているエレメントは、主要な HTML エレメントとその説明のエレメントに対応しています。

コード リスト8-3 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>

表 8-2 主要な HTML エレメントとその説明

エレメント

説明

ACTION=”tlr.asp&drq;

[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 のエラー・ページを返すことを示しています。

コード リスト8-4 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
%>

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

コード リスト8-5 tlr.asp:セッションを探し出す

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

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

コード リスト8-6 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

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

コード リスト8-7 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 ページは、テンプレートにサービス呼び出しが返すデータをマージしたものです (リスト8-7を参照)。

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

コード リスト8-8 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 オブジェクトがない場合は、エラー・テンプレート・ページが返されます。

コード リスト8-9 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 の結果ページがクライアントに返されます。

図 8-4 tlr.asp 結果ページ


 


 

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy