前へ 目次 索引 DocHome 次へ |
iPlanet Calendar Server 5.1 イベント通知サービスマニュアル |
第 1 章 イベント通知サービスの概要
この章では、iPlanet イベント通知サービス (ENS) のコンポーネント、アーキテクチャ、およびアプリケーションプログラミングインタフェース (API) の概要について説明します。
イベント通知サービスの概要
イベント通知サービスの概要
イベント通知サービス (ENS) は、iPlanet 基礎を成す公開購読サービスで、次の iPlanet 製品で利用できます。
iPlanet Calendar Server 5.0 以降
ENS は、関係する特定の種類のイベントを収集する中心点として、iPlanet アプリケーションが使用するディスパッチャの役割を果たします。 イベントとは、リソースの 1 つ、または複数のプロパティの値に対する変更です。 この構成では、URI (Uniform Resource Identifier) はイベントを表しています。 この種のイベントがいつ発生するかを知りたいアプリケーションはすべて ENS に登録します。ENS では、イベントを順番に識別し、通知と購読を照合します。 イベントの例は次のとおりです。iPlanet Messaging Server 5.1 以降 (統合されていますが、有効にはなっていません)
注 iPlanet Messaging Server で ENS を使用可能にする手順や管理する手順については、『iPlanet Messaging Server 5.2 管理者ガイド』の付録 C を参照してください。
特に、ENS は分類できるイベントのレポートを受け付け、イベントの特定のカテゴリに関係すると登録のある他のアプリケーションに通知します。
イベント通知サービス は、パブリッシャおよびサブスクライバにサーバと API を提供します。 パブリッシャは、通知サービスがイベントを有効にします。サブスクライバは、通知サービスに対して特定のイベントの通知を受信したいと知らせます。 ENS API の詳細については、イベント通知サービス API の概要を参照してください。
iPlanet Calendar Server におけるENS
iPlanet Calendar Server では、デフォルトで ENS が使用できます。 iPlanet Calendar Server で ENS を使用するための設定は特に必要ありません。iPlanet Calendar Server が生成する、アラーム以外の通知を購読するユーザは、サブスクライバを作成する必要があります。
iPlanet Calendar Server には、ENS C パブリッシャとサブスクライバのコードサンプルが付属しています。 そのコードについては、「iPlanet Calendar Server サンプルコード」 を参照してください。
iPlanet Calendar Server のコーディング例は、製品の次のディレクトリにあります。
/opt/SUNWics5/cal/csapi/samples/ens
iPlanet Messaging ServerにおけるENS
ENS および iBiff (iPlanet Messaging Server の ENS パブリッシャ、また、iPlanet Messaging Server の通知プラグインとも呼ばれています) は、iPlanet Messaging Server に付属しています。 ただし、デフォルトでは、有効になっていません。iPlanet Messaging Server で通知を購読するには、最初に iPlanet Messaging Server ホスト上で次の 2 つの項目を実行します。
iPlanet Messaging Server で、ENS を使用可能にする手順については、『iPlanet Messaging Server 5.2 管理者ガイド』の付録 C を参照してください。
iPlanet Messaging Server 通知を購読したいユーザは、ENS API に対するサブスクライバを作成する必要があります。 そのために、サブスクライバはさまざまな iPlanet Messaging Server 通知を理解する必要があります。 詳細については、第 5 章「iPlanet Messaging Server 固有の情報」を参照してください。
iPlanet Messaging Server には、ENS C パブリッシャとサブスクライバのコーディング例が付属しています。 詳細については、「iPlanet Messaging Server のコーディング例」を参照してください。
iPlanet Messaging Server のコーディング例は、製品の次のディレクトリにあります。
server-root/bin/msg/enssdk/examples
イベント参照
イベント参照は、ENS が処理するイベントを識別します。 イベント参照は、次の URI 構文 (RFC 2396 で指定) を使用します。scheme://authority
resource/[?param1=value1¶m2=value2¶m3=value3]
scheme は、http、imap、ftp、wcap などのアクセス方式です。
通常、すべての iPlanet Calendar Server イベントは次のように始まります。
authority は、リソースへのアクセスを制御する DNS ドメインまたはホスト名です。
- iPlanet Calendar Server および iPlanet Messaging Server では、ENS スキーマは、enp です。
resource は、authority コンテキスト内のリソースへのパスです。 複数のパスコンポーネントで構成するには、スラッシュ (メ/モ) で区切ります。
デフォルトでは、iPlanet Messaging Server 通知プラグイン iBiff は、次のスキーマとリソースを使用します。
注 イベント参照には URI 構文がありますが、スキーマ、権限、およびリソースには特別な意味はありません。 ENS では、単なる文字列として使用され、それ以上には解釈されません。
iPlanet Calendar Server イベント参照の例
次に示すのは、jac というカレンダー ID で、すべてのイベントアラームを購読する、イベント参照 URI の例です。
iPlanet Messaging Server イベント参照の例
次に示すのは、ユーザ ID が blim というユーザのために、すべての NewMsg イベントの購読を要求するイベント参照の例です。enp://127.0.0.1/store?evtType=NewMsg&mailboxName=blim
ENS を iPlanet Messaging Server とともに使用する場合は、指定するユーザ ID は大文字小文字が区別されます。
ENS 接続プール
ENS の接続プール機能を使用すると、サブスクライバのプールは単一のイベント参照から通知を受信できます。 各イベントについて、ENS はプールからサブスクライバを 1 つ選択して、通知を送信します。つまり、プール内の 1 つのサブスクライバだけが通知を受け取ります。 ENS サーバは、複数のサブスクライバ間で通知の送信を均衡させます。 この機能によって、複数のサブスクライバがまとまって単一のイベント参照からの通知をすべて受信するような、サブスクライバのプールをクライアントに持たせることができます。たとえば、イベント参照 enp://127.0.0.1/store に対して通知が公開されているとすると、サブスクライバは通常、このイベント参照を購読して通知を受け取ります。 このイベント参照へのすべての通知をサブスクライバのプールで受け取るには、プール内の各サブスクライバはこのイベント参照ではなく、イベント参照 enp+pool://127.0.0.1/store を購読するだけで十分です。 ENS サーバは、プールからサブスクライバを 1 つ選択して、通知を送信します。
注 パブリッシャは、依然として単純なイベント参照 (この例では enp://127.0.0.1/store) に通知を送信します。つまり、パブリッシャはサブスクライバプールを知らないということです。
複数プール拡張
接続プールは、複数のサブスクライバプールをサポートできます。 つまり、サブスクライバプールを 2 つ持たせ、各プールがイベント参照からのすべての通知を受け取ることができます。 サブスクライバのイベント参照の構文は次のとおりです。enp+pool[.poolid]://domain/event
この poolid は、base64 アルファベットだけを使用した文字列です (base64 アルファベットの内容については RFC1521の Table 1 を参照してください)。 たとえば、イベント参照 enp://127.0.0.1/store に対してサブスクライバプールを 2 つ持つ例では、各プールが次のイベント参照を購読します。
enp+pool.1://127.0.0.1/store --> 最初のサブスクライバプール用 enp+pool.2://127.0.0.1/store --> 2 番目のサブスクライバプール用
イベント通知サービスのアーキテクチャ
Solaris プラットフォームでは、ENS はデーモン enpd として、さまざまなカレンダーサーバやメッセージングサーバの構成で他の iPlanet デーモンとともに実行され、リソースのプロパティに発生するイベントを収集およびディスパッチします。 Windows NT プラットフォームでは、ENS はサービス enpd.exe として実行されます。ENS では、イベントはリソースに発生した変更で、リソースはカレンダーや受信箱のようなエンティティです。 たとえば、カレンダー (リソース) にエントリを追加するとイベントが発生し、ENS によって格納されます。 そこで、このイベントが購読され、通知がサブスクライバに送信されます。
ENS アーキテクチャを使用すると、次の 3 つの動作が実行できます。
通知 - イベントの発生を記述するメッセージです。イベントパブリッシャにより送信され、それはイベントへの参照のほか、付加的な URI に追加されるパラメータ / 値のペア、そしてイベント・コンシューマにより使われ通知サービスからは非透過な任意のデータ (ペイロード) を含んでいます。イベントに関心があるものはどんなものでも購読できます。
購読 - イベントを購読するために送信されるメッセージです。 イベント参照、クライアント側要求識別情報、およびURI に追加される任意のパラメータ / 値のペアを含んでいます。購読は、「次のイベント」に適用されます (サブスクライバが「次のイベント」を通知するよう要求します)。
購読の解除 - このメッセージは、既存の購読をキャンセル (購読を解除) します。 イベントサブスクライバは、指定したイベントの通知の中継を停止するよう ENS に知らせます。
通知
ENS は、通知を送信して、イベントのサブスクライバに通知します。 「通知する」は、「公開する」ともいいます。 通知には、次の項目を含めることができます。
イベント参照 (オプションで、パラメータと値の組み合わせを含めることができます)
オプションのアプリケーション固有のデータは、「ペイロード」とも呼ばれます。オプションのアプリケーション固有のデータ (ENS に対しては「非透過」ですが、パブリッシャとサブスクライバはデータの形式についてあらかじめ合意しています)
低信頼通知 - イベントパブリッシャから通知サーバに送信される通知。 コンシューマが存在するかまたはそれらが通知を受けるかということについてパブリッシャが知らないか関心がない場合は、この要求は確実にアクノリッジされる必要はありません。 ただし、パブリッシャとサブスクライバとが相互に認識している場合は、パブリッシャとサブスクライバとの間に RENL (Reliable Event Notification Link) を設定することに合意できます。 この場合、サブスクライバがパブリッシャの通知を処理すると、アクノリッジメント通知がパブリッシャに返されます。
詳細については、「パブリッシャ API」を参照してください。高信頼通知 - 購読の結果として、サーバからサブスクライバへ送信される通知。 このタイプの通知に対しては、肯定応答を返す必要があります。 高信頼通知には、低信頼通知と同じ属性が含まれます。
購読
ENS は、イベントサブスクライバが送信するイベント通知要求を受け取ります。この要求が購読です。 購読は、セッションの存続期間中、またはそれがキャンセル (購読の解除) されるまで有効となります。詳細については、44ページの「サブスクライバ API」を参照してください。
購読の解除
ENS が、既存の購読をキャンセルする要求を受け取ります。 詳細については、「サブスクライバ API」を参照してください。
iPlanet Calendar Server が ENS と対話するしくみ
図 1-1 に、ENS が アラームキューおよび csadmind と csnotifyd の 2 つのデーモンを介して iPlanet Calendar Server と対話するしくみを示します。
図 1-1 iPlanet Calendar Server における ENS の概要
iPlanet Calendar Server アラームキュー
ENS は、アラームディスパッチャで、アラームの配信と生成が分離されています。 また、電子メールや無線通信など複数の配信方式が可能となります。 csadmind デーモンは、アラームキューの状態の変化を感知して、イベントを検出します。 アラームキューの状態は、アラームがキューに格納されるたびに変化します。 アラームは、カレンダーイベントがアラームを生成したときに、キューに格納されます。 次の URI は、これらのイベントの種類を表します。enp:///ics/eventalarm?calid=calid&uid=uid&rid=rid&aid=aid
enp:///ics/todoalarm?calid=calid&uid=uid&rid=rid&aid=aid
calid は、カレンダー ID です。
パブリッシャ csadmind は、アラームをキューから削除し、通知を enpd へ送信します。 次に、enpd デーモンは、この種類のイベントの購読者がいるかどうかを調べ、検出した購読に対する通知をサブスクライバ csnotifyd に送信します。 アラーム通知 (リマインダ) に対する、それ以外のサブスクライバは、iPlanet Calendar Server のインストール中に作成し、配備できます。 これらの 3 つのデーモン間の対話により、iPlanet Calendar Server のイベント通知が実装されます。uid は、カレンダー内のイベント/ todo (仕事) ID です。
rid は、再帰イベント/ todo (仕事) の再帰 ID です。
aid は、イベント/ todo (仕事) 内のアラーム ID です。 アラームが複数ある場合は、aid が正しいアラームを指定します。
iPlanet Calendar Server デーモン
iPlanet Calendar Server には、ENS デーモンの enpd と対話する、次の 2 つのデーモンが含まれています。
csadmind
csnotifyd
- csadmind デーモンには、アラームイベントを ENS へ送信して、通知を通知サービスに送信するパブリッシャが含まれています。これが iPlanet Calendar Server のアラームキューを管理します。 また、スケジューラを実装し、そうしてアラームがいつ生成されたかを知ることになります。この時点で、csadmind はイベントを公開します。ENS では、イベント通知の受信およびディスパッチが行われます。
- アラームを確実に送信するために、csadmind は特定のイベントやイベントの種類に対して肯定応答を要求します (アラームの送信の信頼性 参照)。 csadmind デーモンは、RENL (Reliable Event Notification Links) を使用して、アクノリッジメントを達成します。
- csnotifyd デーモンは、特定のイベントへの関心を示す (購読する) サブスクライバです。購読しているイベントに関する通知を ENS から受け取り、これらのイベントや todo (仕事) の通知を電子メールでクライアントに送信します。
- ENS アーキテクチャには購読を解除する機能がありますが、csnotifyd では次の 2 つの理由によりイベントの購読が解除されません。 正常に動作しているときに、購読の解除または再購読を行う必要はないからです。また、購読は一時的に保存される (メモリーに保存される) だけなので、ENS への接続が切断されるとすべての購読が暗黙に購読の解除をされるからです。
- csnotifyd デーモンは、enp:///ics/alarm/ を購読します。 todo (仕事) またはイベントは、パラメータで指定されます。
アラームの送信の信頼性
アラームイベントの紛失を防ぐために、csadmind と csnotifyd は、ENS の RENL 機能を特定の種類のアラームに対して使用します。これらのアラーム通知に対して、csadmind はそれが送信したそれぞれの通知に対し終端間 (end to end) のアクノリッジメントを要求します。また、csnotifyd は、処理を正常に処理すると、受け取った各 RENL アラーム通知に対するアクノリッジメント通知を生成します。RENL アラームの場合、ネットワーク、ENS デーモン、または csnotifyd が通知の処理に失敗すると、csadmind がアクノリッジメントを受け取らないため、アラームキューからアラームを削除しません。 したがって、タイムアウト後、アラームが再公開されます。
iPlanet Calendar Server 例
iPlanet Calendar Server における ENS の公開と購読の一般的な流れを示します。
イベントサブスクライバの csnotifyd から、あるイベントに対する関心を表します。(購読)。
図 1-2 で、この流れを示します。また、表 1-1 で、この図の説明をします。イベントパブリッシャの csadmind は、イベントを検出し、通知を送信します。(通知の公開)
イベントサブスクライバは、イベントへの関心をキャンセルします。(購読の解除) この手順は、ENS への接続が切断されると暗黙に実行されます。
図 1-2 iPlanet Calendar Server のイベント通知サービスの公開と購読の流れの例
ENS がパブリッシャから通知を受け取ると、内部購読テーブルを検索して、通知のイベント参照に一致する購読を検出する。 次に、この購読を所有するサブスクライバへ通知のコピーを購読ごとに中継する
iPlanet Messaging Server が ENS と対話するしくみ
図 1-3 は、ENS が iPlanet Messaging Server と対話するしくみを示したものです。 この図では、各楕円形がプロセスを表し、各矩形は楕円で囲まれたプロセスを実行するホストコンピュータを表します。iPlanet ENS サーバは、通知を iPlanet Messaging Server 通知プラグインから ENS クライアント (iBiff サブスクライバ) に配信します。 ENS サーバより前の通知については、順序に保証はありません。イベントは異なるプロセス (MTA、stored、および imapd) から送信されるためです。
通知は、MTA プロセス、stored プロセス、および imap プロセスの iBiff プラグインから ENS enpd に転送されます。 ENS クライアントは、ENS を購読し、通知を受け取ります。 iBiff が使用可能な場合、iPlanet Messaging Server は iBiff プラグインを使用して通知を公開しますが、これらの通知を購読する iPlanet Messaging Server サービスはありません。 通知をコンシュームしたり、必要な処理を実行するためには、顧客提供の ENS サブスクライバまたはクライアントを作成するべきです。 つまり、iPlanet Messaging Server 自体は機能を実現するために、通知に依存することも通知を使用することもありません。そのため、iPlanet Messaging Server をインストールしたとき、デフォルトでは ENS と iBiff は動作しないようになっています。
iPlanet Messaging Server のアーキテクチャでは、指定した一連のメールボックスに対して、指定したホストコンピュータがサービスを提供します。 指定したメールボックスに複数のホストコンピュータがサービスを提供することはありません。 指定したメールボックスを操作するプロセスはいくつかありますが、指定したメールボックスにサービスを提供するコンピュータホストは 1 つだけです。 したがって、通知を受け取るためには、エンドユーザは、関心のあるメールボックスにサービスを提供している ENS デーモンを購読するだけで十分です。
iPlanet Messaging Server を使用すると、すべてのメールボックス用に 1 台の ENS サーバ (すなわち、メッセージストアにサービスを提供するすべてのコンピュータホストに対して 1 台の ENS サーバ) を持つことまたは、複数の ENS サーバ、おそらくコンピュータホストごとに 1 台の ENS サーバを持つことのどちらかが可能となります。 2 番目のシナリオの方がスケーラブルです。 また、このシナリオでは、エンドユーザが関心のあるメールボックスのイベントを取得するには、複数の ENS サーバを購読しなければなりません。
したがって、アーキテクチャでは、コンピュータホストごとに ENS サーバが必要です。 ENS のサーバプロセスとクライアントプロセスを互いに同じ場所に配置したり、メッセージングサーバと同じ場所に配置したりする必要はありません。
図 1-3 iPlanet Messaging Server における ENS の概要
イベント通知サービス API の概要
この節では、C API および Java Messaging Service (JMS) API のサブセットである Java API の、ENS の 2 つの API について説明します。 iPlanet Messaging Server 5.2 および iPlanet Calendar Server 5.1 以降、ENS に Java API が追加されています。 Java API は、Java Message Service 仕様 (JMS) に準拠しています。 JMS API を使用した Java サブスクライバのサンプルが 2 つ用意されています。ENS C API の詳細については、第 2 章「イベント通知サービス C API リファレンス」を参照してください。 Java (JMS) API の詳細については、第 3 章「イベント通知サービス Java (JMS) API リファレンス」を参照してください。 JMS のマニュアルについては、次の URL にアクセスしてください。
http://java.sun.com/products/jms/docs.html
ENS C API の概要
ENS は、次の 3 つの API を実装しています。
パブリッシャ API
サブスクライバ API
- パブリッシャが購読対象イベントの通知を ENS に送信すると、ENS はこれをサブスクライバに配信します。 iPlanet Calendar Server では、アプリケーションがオプションで通知の受信のアクノリッジメントを要求することもできます。 これを行うには、RENL (Reliable Event Notification Link) が必要です。 RENL は、パブリッシャ、サブスクライバ、およびアクノリッジメントの対象になる通知を識別する一意の ID で構成されます。 パブリッシャは、publish_a に渡される end2end_ack コールバックを呼び出して、アプリケーションにアクノリッジメントの受信を知らせます。 現状では、iPlanet Calendar Server だけが RENL をサポートしています。
公開および購読ディスパッチャ API
- サブスクライバは、特定のイベントへの関心を表す、通知サービスに対するクライアントです。 通知サービスは、パブリッシャからこれらのイベントのうちの 1 つに関する通知を受け取ると、サブスクライバにその通知を中継します。
- サブスクライバは購読を解除する (活性化している購読をキャンセルする) こともできます。
- iPlanet Calendar Server で、RENL を使用可能にするには、サブスクライバが ENS に対してその存在を宣言し、次に ENS がサブスクライバアプリケーションに代わって通知のアクノリッジメントを透過的に作成します。 サブスクライバは、いつでも RENL を廃棄できます。
ENS Java API の概要
ENS 用の Java APIは、標準 JMS API のサブセットを使い、次の 2 つの新しい専用メソッドを持っています。次に示す JMS オブジェクトクラスのリストは、ENS 用 Java API で使用されるものです。
javax.jms.TopicSubscriber
注 ENS 用 Java API は、すべての JMS オブジェクトクラスを実装しているわけではありません。 カスタマイズするときは、このリストにあるオブジェクトクラスだけを使用してください。
カスタムアプリケーションの作成と実行
ユーザ自身のカスタムパブリッシャとサブスクライバアプリケーションの作成を支援するために、iPlanet Messaging Server および iPlanet Calendar Server にはコーディング例が付いています。 この節では、コーディング例、API のインクルード (ヘッダー) ファイル、およびカスタムプログラムの作成と実行に必要なライブラリの場所を示します。
iPlanet Calendar Server
iPlanet Calendar Server には、ユーザが始めるのを支援するために、4 つの簡単なサンプルプログラムが付いています。これらのサンプルのコードは、次のディレクトリにあります。/opt/SUNWics5/cal/csapi/samples/ens
iPlanet Messaging Server
iPlanet Messaging Server 5.1 以降には、通知を受信する方法の理解を支援するためのサンプルプログラムが付いています。 これらのサンプルプログラムは、server-root/bin/msg/enssdk/examples ディレクトリにあります。
iPlanet Calendar Server
パブリッシャおよびサブスクライバ API には、publisher.h、suscriber.h、および pasdisp.h (公開および購読ディスパッチャ) のインクルード (ヘッダー) ファイルがあります。これらのファイルは、CSAPI include ディレクトリにあります。 デフォルトの include パスは、次のとおりです。/opt/SUNWics5/cal/csapi/include
iPlanet Messaging Server
デフォルトの iPlanet Messaging Server の include パスは、次のとおりです。server-root/bin/msg/enssdk/include
iPlanet Calendar Server
カスタムコードは、動的にリンクされる libens ライブラリとリンクする必要があります。このライブラリには、パブリッシャおよびサブスクライバの API が実装されています。 一部のプラットフォームでは、libens に依存するすべてのライブラリを、リンク指示の一部に含める必要があります。 それらの従属ライブラリを順番に示します。上記のライブラリは、iPlanet Calendar Server で使用されるため、サーバの bin ディレクトリに配置されています。 デフォルトの libens パスは、次のとおりです。
注 Windows NT の場合、パブリッシャおよびサブスクライバアプリケーションを作成するには、上記のすべてのライブラリに対応するアーカイブファイル (.lib ファイル) も必要となります。 アーカイブファイルは、CSAPI ライブラリのディレクトリ lib にあります。 デフォルトのパスは、次のとおりです。
iPlanet Messaging Server
iPlanet Messaging Server のライブラリは、次のディレクトリにあります。必要なライブラリを判断するには、server-root/bin/msg/enssdk/examples/Makefile.sample を参照してください。この makefile には、apub プログラムと asub プログラムをコンパイルして実行する方法に関する指示が含まれています。 また、このファイルは、必要なライブラリ、および LD_LIBRARY_PATH がどうなるべきかについても説明しています。
図 1-4 Makefile.sample ファイル
iPlanet Calendar Server
/opt/SUNWics5/cal/bin ディレクトリからカスタムプログラムが必要とする実行時ライブラリを見つけられるように、ユーザ環境の実行時ライブラリのパス変数にこのディレクトリを含めます。この変数の名前は、プラットフォームによって異なります。
iPlanet Messaging Server
iPlanet Messaging Server では、LD_LIBRARY_PATH を server-root/bin/msg/lib に設定します。
前へ 目次 索引 DocHome 次へ
Copyright (C) 2002 Sun Microsystems, Inc. Some preexisting portions Copyright (C) 2000 Netscape Communications Corp. All rights reserved.
最終更新日: 2002 年 1 月 31 日