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

COBOL を使用した Tuxedo アプリケーションのプログラミング

 Previous Next Contents View as PDF  

BEA Tuxedo プログラミングの概要

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

 


BEA Tuxedo 分散アプリケーションのプログラミング

分散アプリケーションは、複数のハードウェア・システム上にあるソフトウェア・モジュールから構成され、これらのモジュールが互いに通信してアプリケーションのタスクが実行されます。たとえば、次の図に示すリモート・オンライン銀行業務システムの分散アプリケーションは、顧客のホーム・コンピュータで実行されるソフトウェア・モジュールと、すべての口座レコードを管理する銀行のコンピュータ・システムから構成されています。

図 1-1 分散アプリケーションの例 - オンライン銀行業務システム


 

たとえば、ログオンしてメニューからオプションを選択するだけで、残高を照会できます。この処理では、ローカル・ソフトウェア・モジュールが特別なアプリケーション・プログラミング・インターフェイス (API) ルーチンを使用して、リモート・ソフトウェア・モジュールと通信しています。

BEA Tuxedo 分散アプリケーション・プログラミング環境では、分散ソフトウェア・モジュール間で安全かつ信頼性の高い通信を行うために必要な API ルーチンが提供されています。BEA Tuxedo API は、アプリケーション・トランザクション・モニタ・インターフェイス (ATMI) と呼ばれます。

ATMI を使用すると、以下の操作を行うことができます。

 


コミュニケーション・パラダイム

次の表は、アプリケーション開発者が利用できる BEA Tuxedo のコミュニケーション・パラダイムを示しています。

表 1-1 コミュニケーション・パラダイム

パラダイム

説明

要求/応答型通信

要求/応答型通信では、あるソフトウェア・モジュールが 2 番目のソフトウェア・モジュールに要求を送り、その応答を受け取ります。要求元が応答を受け取るまで処理が行われずに待機する同期通信、または要求元が応答を待機する間も処理が継続される非同期通信の 2 種類があります。

このモードは、クライアント/サーバ相互作用とも呼ばれます。最初のソフトウェア・モジュールがクライアント、2 番目のソフトウェア・モジュールがサーバになります。

このパラダイムの詳細については、クライアントおよびサーバへの要求/応答のコーディングを参照してください。

会話型通信

会話型通信は要求/応答型通信に似ていますが、「会話」が終了する前に複数の要求や応答が発生します。会話型通信では、会話が切断されるまでクライアントとサーバで状態の情報が保持されます。クライアントとサーバ間でメッセージをやり取りする方法は、使用するアプリケーション・プロトコルによって決定されます。

通常、会話型通信はサーバからクライアントへの長い応答のバッファとして使用されます。

このパラダイムの詳細については、会話型クライアントおよびサーバのコーディングを参照してください。

アプリケーション・キュー・ベースの通信

アプリケーション・キュー・ベースの通信では、遅延通信、つまり時間に依存しない通信が行われます。この通信では、クライアントとサーバがアプリケーション・キューを使用して通信します。BEA Tuxedo/Q 機能を使用すると、メッセージを永続的な記憶装置 (ディスク) や一時的な記憶装置 (メモリ) のキューに入れることができ、後で処理したり取り出すことができます。

アプリケーション・キュー・ベースの通信は、たとえば、メンテナンスのためにシステムをオフラインにしたときに要求をキューに登録する場合や、クライアントとサーバの処理速度が異なる場合に通信をバッファに格納する場合に使用します。

/Q 機能の詳細については、『BEA Tuxedo /Q コンポーネント』を参照してください。

イベント・ベースの通信

イベント・ベースの通信では、特別な状況 (イベント) が発生した場合に、クライアントやサーバがそれをクライアントに通知します。

イベントの通知には、次の 2 つの方法があります。

イベント・ベースの通信は、BEA Tuxedo のイベント・ブローカ機能に基づいています。

このパラダイムの詳細については、イベント・ベースのクライアントおよびサーバのコーディングを参照してください。

 


BEA Tuxedo クライアント

BEA Tuxedo クライアントとは、ユーザの要求を収集し、その要求に対するサービスを提供するサーバにその要求を転送するソフトウェア・モジュールです。ほとんどのソフトウェア・モジュールは、BEA Tuxedo クライアントとして動作できます。その場合、ATMI クライアント初期化ルーチンを呼び出して、BEA Tuxedo アプリケーションに「参加」します。以降、クライアントはサーバと情報をやり取りできるようになります。

クライアントは、ATMI 終了ルーチンを呼び出してアプリケーションから「分離」し、BEA Tuxedo システムにクライアントをトラッキングする必要がなくなったことを通知します。これにより、ほかの操作で BEA Tuxedo アプリケーションのリソースを使用できるようになります。

次は、基本的なクライアント・プロセスの処理を示す擬似コードです。

コード リスト 1-1 クライアントの擬似コード

START PROGRAM
BEA TUXEDO アプリケーションのクライアントとして登録
初期クライアント ID をデータ構造体に格納
最後まで実行
ユーザー入力を取得
ユーザ入力を DATA-REC に格納
サービス要求を送信
応答を受信
応答をユーザに送信
実行を終了
アプリケーションの終了
END PROGRAM

この擬似コードに示したほとんどの処理は、ATMI 呼び出しでインプリメントされます。ただし、ユーザ入力を DATA-REC に格納する処理と、ユーザに応答を返す処理は、COBOL ルーチンでインプリメントされます。

クライアントは、アプリケーションから分離する前に、サービス要求をいくつでも送受信できます。クライアントは、これらの要求を一連の要求/応答型呼び出しとして送信することができます。また、ある呼び出しから別の呼び出しに状態の情報を渡す必要がある場合は、会話型サーバに接続して要求を送ることもできます。どちらの方法でもクライアント・プログラムのロジックは同じですが、使用する ATMI 呼び出しは異なります。

ATMI クライアントを実行するには、buildclient-C コマンドを実行してクライアントをコンパイルし、BEA Tuxedo ATMI および必要なライブラリとリンクします。buildclient(1) コマンドの詳細については、クライアントのコーディングを参照してください。

 


BEA Tuxedo サーバ

BEA Tuxedo サーバとは、クライアントに対して 1 つ以上のサービスを提供するプロセスです。サービスとは、クライアントが処理を要求する特定のビジネス・タスクです。サーバは、クライアントから要求を受け取り、それらを適切なサービス・サブルーチンにディスパッチします。

サーバの基本的な動作

サーバのビルドでは、サービス・サブルーチンと、BEA Tuxedo システムで提供される制御プログラムとがアプリケーションによって組み合わされます。この制御プログラムはシステムによって提供され、定義済みのルーチンから構成されています。この制御プログラムは、サーバの初期化と終了を行ったり、ユーザ入力をデータ構造体に格納して、要求を受信してサービス・ルーチンへのディスパッチを行ったりします。このすべての処理は、アプリケーションに透過的です。

次の図は、サーバとサービス・ルーチン間の相互作用を示す疑似コードです。

図 1-2 要求/応答型サーバとサービス・サブルーチンの擬似コード


 

初期化後、サーバは要求メッセージがメッセージ・キューに登録されるまで待機し、その要求をキューから取り出してサービス・サブルーチンに送り、要求を処理します。応答が必要な場合は、その応答は要求処理の一部と見なされます。

会話型パラダイムは、次の図の疑似コードで示すように、要求/応答型パラダイムとは多少異なります。

図 1-3 会話型サービス・サブルーチンの擬似コード


 

BEA Tuxedo システム提供の制御プログラムには、プロセスをサーバとして登録し、サービスを宣言し、キューから要求メッセージを取り出すために必要なコードが記述されています。ATMI 呼び出しは、要求を処理するサービス・サブルーチンで使用されます。サービス・サブルーチンのコンパイルとテストを行う準備ができたら、これらをサーバとリンクして、実行可能サーバを生成します。その場合、buildserver -C コマンドを実行します。

要求元としてのサーバ

クライアントが複数のサービスや同じサービスを複数回要求する場合、サービスのサブセットを別のサーバに転送して実行することができます。その場合、サーバはクライアント、つまりサービスの要求元として動作します。つまり、クライアントとサーバの両方が要求元になることができます。ただし、クライアントは要求元にしかなれません。このようなモデルは、BEA Tuxedo の ATMI 呼び出しを使用すると簡単にコーディングできます。

注記 要求/応答型サーバも、要求を別のサーバに転送できます。その場合、サーバはクライアント (要求元) としては動作しません。応答を必要としているのは、要求を転送したサーバではなく、元のクライアントだからです。

 


BEA Tuxedo API: ATMI

アプリケーションのロジックを記述する COBOL 言語のほかに、アプリケーション・トランザクション・モニタ・インターフェイス (ATMI) を使用する必要があります。この ATMI は、アプリケーションと BEA Tuxedo システム間のインターフェイスになります。

ATMI は、リソースのオープンとクローズ、トランザクションの開始と終了、およびクライアントとサーバ間の通信のサポートなどの処理に使用されるコンパクトな呼び出しのセットです。次の表は、ATMI 呼び出しをまとめたものです。各呼び出しについては、『BEA Tuxedo COBOL リファレンス』を参照してください。

表 1-2 ATMI 呼び出し

タスク

■訳文不要■ . .

COBOL 関数 . .

目的 . .

参照先 . .

クライアントのメンバーシップ

TPINITIALIZE

クライアントをアプリケーションに参加させます。

クライアントのコーディング

TPTERM

クライアントをアプリケーションから分離します。

複数のアプリケーション・コンテキストの管理

TPGETCTXT(3cbl)

現在のスレッドのコンテキストの識別子を取得します。

マルチスレッドおよびマルチコンテキスト・アプリケーションのプログラミング

TPSETCTXT(3cbl)

マルチコンテキスト・プロセスに現在のスレッドのコンテキストを設定します。

サービスの登録と応答

TPSVCSTART

サービス情報を取得します。

サーバのコーディング

TPSVRINIT

サーバを初期化します。

TPSVRDONE

サーバを終了します。

TPRETURN

サービス・ルーチンを終了します。

TPFORWAR

要求を転送します。

動的な宣言

TPADVERTISE

サービス名を宣言します。

サーバのコーディング

TPUNADVERTISE

サービス名の宣言を取り消します。

メッセージの優先順位

TPGPRIO

最後の要求の優先順位を取得します。

サーバのコーディング

TPSPRIO

次の要求の優先順位を設定します。

要求/応答型通信

TPCALL

サービスへの同期要求/応答を開始します。

TPACALL

非同期要求 (ファンアウト) を開始します。

TPGETRPLY

非同期応答を受け取ります。

TPCANCEL

非同期要求を取り消します。

会話型通信

TPCONNECT

サービスとの会話を開始します。

会話型クライアントおよびサーバのコーディング

TPDISCON

会話を異常終了します。

TPSEND

会話中にメッセージを送信します。

TPRECV

会話中にメッセージを受信します。

高信頼性キュー

TPENQUEUE(3cbl)

メッセージをメッセージ・キューに登録します。

『BEA Tuxedo /Q コンポーネント』

TPDEQUEUE(3cbl)

メッセージをメッセージ・キューから取り出します。

イベント・ベースの通信

TPNOTIFY

クライアントに任意通知型メッセージを送信します。

イベント・ベースのクライアントおよびサーバのコーディング

TPBROADCAST

複数のクライアントにメッセージを送信します。

TPSETUNSOL

任意通知型メッセージのコールバックを設定します。

TPCHKUNSOL

任意通知型メッセージの到着を確認します。

TPGETUNSOL

任意通知型メッセージを取得します。

TPPOST

イベント・メッセージをポストします。

TPSUBSCRIBE

イベント・メッセージをサブスクライブします。

TPUNSUBSCRIBE

イベント・メッセージのサブスクリプションを削除します。

トランザクション管理

TPBEGIN

トランザクションを開始します。

グローバル・トランザクションのコーディング

TPCOMMIT

現在のトランザクションをコミットします。

TPABORT

現在のトランザクションをロールバックします。

TPGETLEV

トランザクション・モードであるかどうかを確認します。

リソース管理

TPOPEN(3cbl)

リソース・マネージャをオープンします。

TPCLOSE(3cbl)

リソース・マネージャをクローズします。

セキュリティ

TPKEYOPEN(3cbl)

デジタル署名の生成、メッセージの暗号化/暗号解読のためのキー・ハンドルをオープンします。

『BEA Tuxedo CORBA アプリケーションのセキュリティ機能』

TPKEYGETINFO(3cbl)

キー・ハンドルに対応付けられた情報を取得します。

TPKEYSETINFO(3cbl)

キー・ハンドルに対応付けられた属性 (省略可能) を設定します。

TPKEYCLOSE(3cbl)

TPKEYOPEN を使用して既にオープンされているキー・ハンドルをクローズします。

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy