前へ     目次     索引     DocHome     次へ     
iPlanet Calendar Server プログラマリファレンス



第 4 章   イベント通知サービス (ENS) の概要


イベント通知サービス (Event Notification Service、ENS) は、iPlanet Calendar Server 5.0 に付属する汎用の公開および購読サービスです。ENS は、iPlanet アプリケーションによって使用されるディスパッチャーとして機能します。ENS は、iPlanet アプリケーションが扱う特定のタイプのイベントの収集を集中管理します。特に、分類できるイベントのレポートを受け取り、そのカテゴリのイベントにアプリケーションが扱う処理として登録されている場合は、それらのアプリケーションに通知します。

要約すると、ENS は次の目的に使われるインターネットサービスです。

  • 情報を必要としているユーザにイベントを通知する

  • 新たに生じるイベントを購読する (新たに生じるイベントの通知を要求する)

  • 既存の購読をキャンセルする (購読を中止する)



  iPlanet では、汎用メッセージ指向ミドルウェアシステムを提供しています。ENS とは異なり、Java Message Queue (JMQ) と呼ばれます。JMQ は、Java Message Service (JMS) の実装です。

現時点では、ENS サブスクライバ API のみが Calendar Server イベントにアクセスするのに使用できます。特に、JMS を使って Calendar Server イベントにアクセスしないでください。将来、iPlanet メッセージングミドルウェアの API は JMS に統合される予定です。つまり、JMS が Calendar Server イベントにアクセスする主要な手段になります。



この章には、次のトピックがあります。



ENS 用語集

イベント

リソースの変化。たとえば、ユーザが新しい会議をカレンダー (リソース) に追加した場合など。ENS の場合、イベントとはアラームキューの状態の変化のこと

イベントカスタマ

「イベントサブスクライバ」の同義語

イベントプロデューサ

「イベントパブリッシャ」の同義語

イベントパブリッシャ

ほかのアプリケーションにイベントを通知するアプリケーション

イベント参照

ENS によって処理されるイベントを識別する。RFC 2396 で定義されている URI 構文に準拠する

イベントサブスクライバ

イベントを消費するアプリケーション

通知

イベントの発生を示すメッセージ。イベントパブリッシャによって送信され、イベントへの参照とイベントカスタマによって使用されるオプションデータを含む。このメッセージは、通知サービスには不透明

通知サービス

ほかのサーバから購読依頼と通知を受け取り、通知をサブスクライバに中継する

通知サーバ

通知サービスは、1 つ以上のサーバインスタンスから構成される。各インスタンスは、異なるホストで実行される

通知する

「公開する」の同義語

公開する

通知を送信する。イベントパブリッシャは、通知サービスにイベントを提供する

RENL (Reliable Event
Notification Link)

RENL は、パブリッシャ、サブスクライバ、および一意の識別子を持ち、これらによって応答が必要な通知を識別する

リソース

IP ネットワークからアクセスされるデータ。たとえば、カレンダーなどが該当する

リソースの状態

リソースを表す属性の値。たとえば、会議の時刻など

購読する

購読依頼を送信する。イベントサブスクライバが、通知を必要とするイベントについて通知サービスに登録すること

購読依頼

イベントサブスクライバが送信するメッセージ。イベント参照、クライアント側の要求識別子、およびオプションのアクセスコントロール規則が含まれる

購読を中止する

購読をキャンセルする。イベントサブスクライバが、特定のイベントについて通知の中継の停止をイベント通知サービスに登録すること



イベント



イベントとは、リソースの 1 つ以上のプロパティ値が変化することです。URI でイベントを表現します。イベントがいつ発生したかという情報を必要とするアプリケーションが、ENS に登録されます。その登録情報でイベントを順番に識別し、通知と購読を対応付けます。



イベント参照



イベント参照は、ENS によって処理されるイベントを識別します。イベント参照は、RFC 2396 で定義された URI 構文を使います。

イベント参照の URI 構文を次に示します。

イベント参照:= scheme ":"authority resource ["?" param "=" value *("&" param "=" value)]

この構文の各変数は次のとおりです。

  • scheme は、httpimapftpwcap などのアクセス手段です。

    iPlanet Calendar Server 5.0 の場合、ENS スキーマは enp になります。

  • authority は、リソースへのアクセスを制御する DNS ドメインまたはホスト名です。

  • resource は、authority コンテキスト内のリソースへ到達するためのパスです。複数のパス要素を指定するには、「/」で区切ります。

  • param は、リソースの状態を表すパラメータの名前です。

  • value は、パラメータの値です。パラメータと値の組み合わせは複数個指定できます。指定しなくてもかまいません。

すべての iPlanet Calendar Server イベントの URI スキーマは、次のようになります。

enp://domain.com/calendar/ics/v50/instance




たとえば、iPlanet Calendar Server 5.0 ユーザが特定の一意の識別子ですべてのイベントアラームを購読する場合は、URI は次のようになります。

enp://domain.com/calendar/ics/v50/ics-hostname/alarms?type=events
&uid=XXXX



イベント通知サービス



イベント通知サービスは、アプリケーションが次の目的で使用するインターネットサービスです。

ENS は、enpd デーモンとして動作します。ほかの iPlanet Calendar Server 5.0 デーモンとともに、さまざまなカレンダーサーバ構成で動作します。ENS および iPlanet Calendar Server 5.0 の統合についての詳細は、この章の 「Calendar Server と ENS との連携動作」第 1 章「アーキテクチャの概要」「水平方向のスケーラビリティ」を参照してください。


通知する

ENS はサブスクライバにイベントを通知するために、イベント参照、オプションのアクセスコントロール規則、およびオプションのアプリケーション固有の (ENS には不透明) データで構成される通知を送信します。「公開する」とも呼びます。

通知には、次の 2 種類があります。

  • 非請求通知。イベントパブリッシャから通知サーバに送信される通知。イベントサブスクライバが存在するかどうか、サブスクライバが通知を受け取ったかどうかをパブリッシャが知らないまたはそれに注意を払わない場合には、この要求は応答を必要としません。しかしながら、パブリッシャとサブスクライバが互いに認識できる場合は、RENL (reliable event notification link) を設定することもあります。その場合には、サブスクライバはパブリッシャからの通知を処理すると、応答をパブリッシャに返します。

  • サーバ通知。 購読依頼に基づいて、サーバからサブスクライバへ送信される通知。このタイプの通知には、応答を返す必要があります。サーバ通知には、自発通知と同じ属性が含まれます。


購読する

ENS は、イベントの通知要求を受け取ります。イベントサブスクライバが送信する要求が購読依頼です。購読依頼は、セッションの存続期間中、または購読が中止されるまで有効です。

購読依頼は、イベント名、クライアント側の要求 ID、およびオプションのアクセスコントロール規則を含んでいます。を参照してください。


購読を中止する

ENS は、購読のキャンセル要求を受け取ります。クライアント側の要求 ID とセッション ID が購読依頼を識別します。



Calendar Server と ENS との連携動作



ENS は、アラームキューおよび 2 つのデーモン csadmindcsnotifyd を介して、Calendar Server と連携動作します。図 4-1 は、2 つの Calendar Server デーモンと ENS デーモンとの連携動作を示しています。

図 4-1    ENS の概要



アラームキュー

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 です。

  • uid は、カレンダー内のイベント/仕事 ID です。

  • rid は、イベント/仕事が繰り返し発生する場合の繰り返し ID です。

  • aid は、イベント/仕事内のアラーム ID です。アラームが複数ある場合は、aid でアラームを識別します。

csadmind は、アラームをキューから削除して通知を enpd へ送信します。次に、enpd は、このタイプのイベントの購読者がいるかどうかを調べ、検出した購読に対する通知を csnotifyd に送信します。この 3 つのデーモン間の対話により、イベント通知が行われます。


デーモン

iPlanet Calendar Server には、ENS デーモンの enpd と対話する次の 2 つのデーモンが組み込まれています。

  • csadmind

    csadmind は、通知サービスに通知を送信するパブリッシャであり、イベントアラームを ENS へ送信します。csadmind は、iPlanet Calendar Server 5.0 のアラームキューを管理します。また、スケジューラを実装し、アラームが生成されるタイミングを知らせます。アラームの生成を知らされた時点で、csadmind はイベントを公開します。ENS は、イベント通知の受信およびディスパッチを行います。

    アラームを確実に送信するために、csadmind は、特定のイベントまたは特定のイベントタイプに対する応答を要求します。この章の「アラーム転送の信頼性」を参照してください。csadmind は、RENL (Reliable Event Notification Links) を使用してイベント通知が確実に送信されたかどうかを確認します。

  • csnotifyd

    csnotifyd は、特定のイベントに関心を持つ、つまり特定のイベントを購読しているサブスクライバです。購読しているイベントについての通知をイベント通知サービスから受け取り、これらのイベントと仕事についてのお知らせを電子メールでクライアントに送信します。

    ENS アーキテクチャには購読を中止する機能がありますが、csnotifyd では次の 2 つの理由によりイベントの購読を中止しません。まず、通常動作において、購読の中止または再購読を行う必要はないためです。次に、購読は一時的に保存される (メモリに保存される) だけなので、ENS への接続が切断されるとすべての購読は暗黙に購読が中止されるためです。

    csnotifyd は、ics://hostname/alarm/pop を購読するため、ホスト hostname に対するすべてのアラーム通知を受け取ります。csnotifyd は、アラーム通知を受け取ると電子メールメッセージを生成します。


アラーム転送の信頼性

アラームの紛失を防ぐために、csadmindcsnotifyd は特定の種類のアラームに対して ENS の RENL 機能を使用します。csadmind は、それらのアラームに対して終端間の応答を要求します。また、csnotifyd は通知を正常に処理したあと、受け取った各 RENL アラーム通知に対する応答を生成します。

RENL アラームの場合、ネットワーク、ENS デーモン、または csnotifyd が通知の処理に失敗した場合、csadmind は応答を受け取れないため、アラームキューからアラームを削除しません。そのため、タイムアウトのあとでアラームが再度公開されます。




ENS の公開と購読の一般的な流れを示します。

  1. イベントサブスクライバの csnotifyd が、特定のイベントに対して関心があることを表明します (購読する)。

  2. イベントパブリッシャの csadmind は、イベントを検出して通知を送信します (公開する)。

  3. ENS がイベントをサブスクライバに公開します。

  4. イベントサブスクライバは、イベントに対する関心をキャンセルします (購読の中止)。このステップは、ENS への接続が切断されると暗黙に行われます。

図 4-2 は、この流れを示しています。また、表 4-1 は、この図の説明です。

図 4-2    イベント通知サービスの公開と購読の流れの例




表 4-1 イベント通知サービスの公開と購読の流れの例

動作  

ENS の応答  

  1. csnotifyd が購読要求を ENS に送信する

 

ENS が購読依頼を購読データベースに保存する  

  1. csadmind が通知要求を ENS に送信する

 

ENS は、通知に一致する購読依頼を購読データベースから検索する  

  1. csnotifyd が ENS から通知を受け取る

 

購読依頼条件に一致している個々の通知に対して、アクセス権が付与され、その依頼ごとに通知要求を配信キューに追加する

csnotifyd は、配信キューの要求を非同期に削除して通知を送信する  

  1. このバージョンの csnotifyd は、ENS にキャンセル 要求を送信しない

 

購読依頼は、データベースではなくメモリだけに保存され、ENS への接続が切断されると、すべての購読が暗黙に中止されるため  


前へ     目次     索引     DocHome     次へ     
Copyright © 2000 Sun Microsystems, Inc. Some preexisting portions Copyright © 2000 Netscape Communications Corp. All rights reserved.

Last Updated June 04, 2001