イベントとは、ネットワークの突然の切断など、実行中のアプリケーションで起こった状態の変更などで、オペレータ、システム管理者、またはソフトウェアによる操作を必要とするものです。Oracle Tuxedoシステムでは、次の2種類のイベントが通知されます。
アプリケーション・イベントはアプリケーション定義イベントの発生、システム・イベントはシステム定義イベントの発生を意味します。Oracle Tuxedoのイベント・ブローカ・コンポーネントでは、アプリケーション・イベントとシステム・イベントの両方の受信および配信が可能です。
アプリケーション定義のイベントは、アプリケーションの設計者によって定義されます。そのため、アプリケーション固有のものです。アプリケーションに対して定義されたすべてのイベントは、アプリケーションで実行されているクライアント・プロセスおよびサーバー・プロセスによって追跡されます。
システム定義のイベントは、Oracle Tuxedoシステムのコードによって定義されます。通常、TM_MIB(5)で定義されたオブジェクトが対応付けられています。システム定義の全イベントのリストは、EVENTS(5)リファレンス・ページに記載されています。これらすべてのイベントは、Oracle Tuxedoシステムのユーザーによって追跡されます。
Oracle Tuxedoのイベント・ブローカでは、アプリケーション定義のイベントとシステム定義のイベントの両方がポストされます。そして、アプリケーションではこの両方のイベントをサブスクライブできます。この2種類のイベントは、名前から区別できます。システム定義のイベントはピリオド( . )で開始され、アプリケーション定義のイベントはピリオド( . )以外の文字で開始されます。
Oracle Tuxedoのイベント・ブローカは、Oracle Tuxedoアプリケーションで実行中のプロセス間で、アプリケーション・イベントを非同期にルーティングするためのツールです。また、このツールでは、システム・イベントを受信する必要のあるアプリケーション・プロセスにシステム・イベントが配信されます。
注: | デモとしてコピーして実行できるサンプル・アプリケーションについては、『Oracle Tuxedo ATMIアプリケーション開発のためのチュートリアル』のbankapp(完全なC言語アプリケーション)のチュートリアルに関する項を参照してください。 |
イベント・ブローカは、MIBオブジェクトの100種類以上の状態の変化をシステム・イベントとして認識します。システム・イベントをポストすると、イベントが発生した現在のMIBとしてのオブジェクト、および発生したイベントを識別するイベント固有のフィールドの情報が提供されます。たとえば、マシンがパーティション化されている場合、ポストされるイベントには次が含まれます:
イベント・ブローカは、システム・イベントをサブスクライブするだけで使用できます。以降、MIBレコードを問合せしなくても、MIBオブジェクトを表すFML
データ・バッファを受け取ることによって、MIBでイベントが発生したことが自動的に通知されます。
Oracle Tuxedoのイベント・ブローカは、任意の数のイベント通知のサプライヤが任意の数のサブスクライバにメッセージをポストするためのツールです。イベント通知のサプライヤは、クライアントまたはサーバーとして動作しているアプリケーション・プロセスまたはシステム・プロセスです。イベント通知のサブスクライバは、クライアントまたはサーバーとして動作しているアプリケーション・プロセス、またはシステム管理者です。
イベント・ブローカを使用するクライアント・プロセスとサーバー・プロセスは、サブスクリプションに基づいて相互に通信します。各プロセスでは、そのプロセスが受け取る必要のあるイベント・タイプが識別され、1つ以上のサブスクリプション・リクエストがイベント・ブローカに送信されます。イベント・ブローカでは、購読料を支払っている購読者だけに新聞を配達するように、そのリクエストを処理します。そのため、イベント・ブローカが基づいているパラダイムは、「パブリッシュ・アンド・サブスクライブ」通信と呼ばれます。
イベント・サプライヤ(クライアントまたはサーバー)は、イベントが発生するたびにイベント・ブローカに通知します。このような通知は、イベントの「ポスト」と呼ばれます。イベント・サプライヤがイベントをポストすると、イベント・ブローカはポストされたイベント・タイプと要求が合致するサブスクライバを探します。サブスクライバは、システム管理者またはアプリケーション・プロセスです。合致するサブスクライバが検出されると、イベント・ブローカは各サブスクリプションに対して指定された処理を行います。つまり、サブスクライバへの通知など、サブスクライバによって指定された処理が開始されます。
図5-1は、イベント・ブローカがイベント・サブスクリプションを処理してポストするプロセスを示しています。
Oracle Tuxedoアプリケーション管理者は、クライアント・プロセスとサーバー・プロセスのかわりに、EVENT_MIB(5)のT_EVENT_COMMAND
クラスへの呼出しを行って、サブスクリプションをリクエストできます。イベント・ブローカを使用して、プログラムでtpsubscribe(3c)関数を呼び出してイベントをサブスクライブすることもできます。
イベント・ブローカのサブスクリプションでは、図5-2に示すいずれかの通知方法が指定されます。
tpsubscribe()
関数を呼び出して、呼び出すサービスの名前を渡します。ULOG
)に書き込まれます。このプロセスは、MIBを介して行われる必要があります。イベント・ブローカでは、サーバーの終了やネットワーク障害などのシステム・イベントに、次の3つの重大度のいずれかが割り当てられます。
表5-2に、システム・イベントの重大度レベルを示します。