Sun ONE logo     前へ     目次     索引     次へ     
Sun ONE Messaging and Collaboration イベント通知サービスマニュアル



第 1 章   イベント通知サービスの概要


この章では、イベント通知サービス (ENS) のコンポーネント、アーキテクチャ、およびアプリケーションプログラミングインタフェース (API) の概要について説明します。

この章は、次の節で構成されています。



イベント通知サービスの概要

イベント通知サービス (ENS) は、Sun ONE の基礎となる公開および購読サービスで、次の Sun ONE 製品で利用できます。

  • iPlanet Calendar Server 5.0、5.1、および Sun ONE Calendar Server 5.1.1

  • iPlanet Messaging Server 5.1 以降 (統合版では使用不可になっている)



    iPlanet Messaging Server でENS を使用可能にする手順や管理する手順については、『iPlanet Messaging Server 5.2 管理者ガイド』の付録 C を参照してください。



ENS は、Sun ONE アプリケーションが使用するディスパッチャとして、配信対象の特定の種類のイベントを収集する中心的な役割を果たします。イベントとは、リソースの 1 つまたは複数のプロパティの値に対する変更のことです。ここでは、URI (Uniform Resource Identifier) がイベントを表しています。この種のイベントが発生した場合に通知されるアプリケーションはすべて ENS に登録します。 ENS ではイベントを順番に識別し、通知を購読状況に照らし合わせます。イベントの例には次のものがあります。

  • ユーザの受信箱への新規メールの着信

  • ユーザのメールボックスの割り当てを超過

  • カレンダーの通知

特に、ENS は分類できるイベントのレポートを受け付け、イベントの特定のカテゴリを配信対象として登録しているほかのアプリケーションに通知します。

イベント通知サービスは、パブリッシャおよびサブスクライバにサーバと API を提供します。パブリッシャは、通知サービスに対してイベントを使用可能にします。サブスクライバは、特定のイベントの通知の受信希望を通知サービスに伝えます。ENS API の詳細については、「イベント通知サービス API の概要」を参照してください。


Sun ONE Calendar Server でのENS

Sun ONE Calendar Server では、ENS がデフォルトで使用可能になっています。Sun ONE Calendar Server で ENS を使用するための設定は特に必要ありません。

Sun ONE Calendar Server が生成する、アラーム以外の通知を購読するユーザは、サブスクライバを作成する必要があります。

Sun ONE Calendar Server には、ENS C パブリッシャとサブスクライバのコーディング例が含まれています。コードについては、「Sun ONE Calendar Server コーディング例」を参照してください。

Sun ONE 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 項目を実行する必要があります。

  • iBiff 通知プラグインを読み込みます。

  • Messaging Server を停止してから再起動します。

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&param2=value2&param3=value3]

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

  • scheme は、httpimapftpwcap などのアクセス方式

    Sun ONE Calendar Server および iPlanet Messaging Server では、ENS スキーマは、enp です。

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

  • resource は authority コンテキスト内のリソースへのパス。複数のパスコンポーネントで構成するには、スラッシュ (/) で区切る

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

  • value はパラメータの値。パラメータと値の組み合わせは複数を指定しても、1 つも指定しなくてもよい

通常、すべての Sun ONE Calendar Server イベントは次で始まります。

enp:///ics

デフォルトでは、iPlanet Messaging Server 通知プラグイン iBiff は、次のスキーマとリソースを使用します。

enp://127.0.0.1/store



イベント参照には URI 構文がありますが、scheme、authority、および resource には特別な意味はありません。ENS では単なる文字列としてしか解釈されません。




Sun ONE Calendar Server イベント参照の例

次に示すのは、jac というカレンダー ID によって、すべてのイベントアラームを購読するイベント参照 URI の例です。

enp:///ics/alarm?calid=jac



エンドユーザが使用するためのものではありません。




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 として、さまざまな Calendar Server や Messaging Server 構成でほかのデーモンとともに実行され、リソースのプロパティに発生するイベントの収集およびディスパッチを行います。Windows NT プラットフォームでは、ENS は enpd.exe サービスとして実行されます。

ENS では、イベントとはリソースに発生した変更であり、リソースとはカレンダーや受信箱のようなエンティティです。たとえば、カレンダー (リソース) にエントリを追加するとイベントが発生し、ENS によって格納されます。そして、このイベントが購読されると、サブスクライバに通知が送信されます。

ENS アーキテクチャを使用すると、次の 3 つを実行できます。

  • 通知 - イベントの発生を記述するメッセージ。イベントパブリッシャにより送信され、イベントへの参照のほか、URI に追加されるパラメータと値の組み合わせ、そしてイベントコンシューマが使用する通知サービスからは不透明な任意のデータ (ペイロード) を含む。イベントを配信対象にすればだれでも購読できる

  • 購読 - イベントを購読するために送信されるメッセージ。イベント参照、クライアント側要求識別子、およびURI に追加される任意のパラメータと値の組み合わせを含む。購読は次のイベントから適用される (サブスクライバは次のイベントから通知するよう要求)

  • 購読の解除 - このメッセージは、既存の購読をキャンセル (購読を解除) する。イベントサブスクライバが ENS に、指定したイベントの通知の中継を停止するよう伝える


通知

ENS は通知を送信して、イベントのサブスクライバに通知します。通知することを「公開する」ともいいます。通知には次の項目を含めることができます。

  • イベント参照 (オプションでパラメータと値の組み合わせを含める)

  • オプションのアプリケーション固有のデータ (ENS には「不透明」だが、パブリッシャとサブスクライバはデータの形式についてあらかじめ合意している)

オプションのアプリケーション固有のデータは、「ペイロード」とも呼ばれます。

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

  • 低信頼通知 - イベントパブリッシャから通知サーバに送信される通知。コンシューマが存在するか、またはそれらが通知を受けるかについて、パブリッシャが認識していないか関心がない場合は、この要求に確実に肯定応答を返す必要はない。ただし、パブリッシャとサブスクライバとが相互に認識している場合は、パブリッシャとサブスクライバ間への高信頼イベント通知リンク (RENL) の設定に合意できる。この場合、サブスクライバがパブリッシャの通知を処理すると、肯定応答の通知がパブリッシャに返される

  • 高信頼通知 - 購読の結果として、サーバからサブスクライバへ送信される通知。このタイプの通知に対しては、肯定応答を返す必要がある。高信頼通知には、低信頼通知と同じ属性が含まれる

詳細については、「パブリッシャ API」を参照してください。


購読

ENS はイベントサブスクライバが送信するイベントの通知要求を受信します。この要求が購読です。購読は、セッションの存続期間中、またはそれがキャンセル
(購読の解除) されるまで有効となります。

購読には、次の項目を含めることができます。

  • イベント参照 (オプションでパラメータ/値の組み合わせを含める)

  • 要求識別子

詳細については、「サブスクライバ API」を参照してください。


購読の解除

ENS は既存の購読をキャンセルする要求を受信します。詳細については、「サブスクライバ API」 を参照してください。


Sun ONE Calendar Server と ENS との対話

図 1-1 で、ENS が アラームキューおよび csadmindcsnotifyd の 2 つのデーモンを介して Sun ONE Calendar Server と対話する方法について示します。

図 1-1    Sun ONE Calendar Server 内の ENS の概要
csnotifyd はアラームを購読します。enpd はメモリーに購読を格納します。csadmind はアラームの通知を enpd に送信します。enpd はこれらのアラームのどれかを購読している場合、アラームに関する通知を csnotifyd に送信します。


Sun ONE Calendar Server アラームキュー

ENS はアラームディスパッチャであり、アラームの生成と配信を分離します。 これにより、電子メールや無線通信など複数の配信方式が可能となります。csadmind デーモンは、アラームキューの状態の変化を感知して、イベントを検出します。アラームキューの状態は、アラームがキューに格納されるたびに変化します。アラームは、カレンダーイベントがアラームを生成したときに、キューに格納されます。次の URI はこれらのイベントの種類を表しています。

イベントの場合

enp:///ics/eventalarm?calid=calid&uid=uid&rid=rid&aid=aid

todo (仕事) の場合

enp:///ics/todoalarm?calid=calid&uid=uid&rid=rid&aid=aid

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

  • calid はカレンダー ID

  • uid はカレンダー内のイベント/ todo (仕事) ID

  • rid は再帰イベント/ todo (仕事) の再帰 ID

  • aid はイベント/ todo (仕事) 内のアラーム ID。アラームが複数ある場合は、aid が正しいアラームを指定

パブリッシャの csadmind は、アラームをキューから削除し、通知を enpd へ送信します。次に、enpd デーモンは、この種類のイベントの購読者がいるかどうかを調べ、検出した購読に対する通知をサブスクライバ csnotifyd に送信します。アラーム通知 (リマインダ) に対する、それ以外のサブスクライバは、Sun ONE Calendar Server のインストール中に作成し、配備できます。これらの 3 つのデーモン間の対話により、Sun ONE Calendar Server のイベント通知が実装されます。


Sun ONE Calendar Server デーモン

Sun ONE Calendar Server には、ENS デーモンの enpd と対話する、次の 2 つのデーモンが含まれています。

  • csadmind

    csadmind デーモンには、アラームイベントを ENS へ送信して、通知サービスに通知を送信するパブリッシャが含まれています。csadmind デーモンは、Sun ONE Calendar Server のアラームキューを管理します。また、スケジューラを実装することにより、アラームをいつ生成するかを知ることができます。その時点で、csadmind はイベントを公開します。ENS はイベント通知を受信してディスパッチします。

    アラームを確実に送信するために、csadmind は特定のイベントやイベントの種類に対して肯定応答を要求します (「アラームの送信の信頼性」を参照) csadmind デーモンは高信頼イベント通知リンク (RENL) を使用して、肯定応答を返します。

  • csnotifyd

    csnotifyd デーモンは、特定のイベントを配信対象にする (購読する) サブスクライバです。購読しているイベントに関する通知を ENS から受け取り、これらのイベントや todo (仕事) の通知を電子メールでクライアントに送信します。

    ENS アーキテクチャには購読を解除する機能がありますが、csnotifyd では次の 2 つの理由によりイベントの購読が解除されません。正常な実行時には購読の解除または購読の再開をする必要がないからです。また、購読は一時的に保存される (メモリーに保存される) だけなので、ENS への接続が切断されるとすべての購読が自動的に解除されるからです。

    csnotifyd デーモンは、enp:///ics/alarm/ を購読します。todo (仕事) またはイベントは、パラメータで指定されます。


アラームの送信の信頼性

アラームイベントの紛失を防ぐために、csadmindcsnotifyd は、ENS の RENL 機能を特定の種類のアラームに対して使用します。これらのアラーム通知に対して、csadmind は送信したそれぞれの通知に対し終端間 (end to end) の肯定応答を要求します。 また、csnotifyd は、処理が正常に終了すると、受け取った各 RENL アラーム通知に対する肯定応答を生成します。

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


Sun ONE Calendar Server の例

Sun ONE Calendar Server における ENS の公開および購読の一般的な流れを示します。

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

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

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

  4. イベントサブスクライバが、イベントの配信対象をキャンセルします (購読の解除)。 この手順は、ENS への接続が切断されると、自動的に行われます。

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

図 1-2    Sun ONE Calendar Serverのイベント通知サービスの公開および購読の流れの例
csnotifyd はイベントサブスクライバです。csadmind はイベントパブリッシャです。enpd は購読を保持し、通知を中継します。


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

動作

ENS の応答

  1. csnotifyd デーモンが ENS に購読要求を送信する

 

ENS が購読を購読データベースに格納する  

  1. csadmind デーモンが ENS に通知要求を送信する

 

ENS は通知に対応する購読を購読データベースで検索する  

  1. csnotifyd デーモンが ENS から通知を受信する

 

ENS がパブリッシャから通知を受信すると、内部購読テーブルを検索して、通知のイベント参照に一致する購読を検出する。次に、この購読を所有するサブスクライバへ通知のコピーを購読ごとに中継する  

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

 

購読は、データベースではなくメモリーだけに保存されるので、ENS への接続が切断されるとすべての購読が自動的に解除される  



iPlanet Messaging Server と ENS との対話

図 1-3 は、ENS が iPlanet Messaging Server と対話する方法を示したものです。この図ではそれぞれ、楕円形がプロセス、四角形は楕円で囲まれたプロセスを実行するホストコンピュータを表しています。

ENS サーバは、通知を iPlanet Messaging Server 通知プラグインから ENS クライアント (iBiff サブスクライバ) に配信します。ENS サーバより前の通知については、順序に保証はありません。 イベントは異なるプロセス (MTAstored、および 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 のサーバプロセスとクライアントプロセスは、2 つを同じ場所に配置したり、Messaging Server と同じ場所に配置したりする必要はありません。

図 1-3    iPlanet Messaging Server における ENS の概要
ENS クライアントは通知を購読し、受信 (コンシューム) します。通知は MTA、stored、imapd プロセス内の iBiff プラグインからフローします。



イベント通知サービス API の概要



この節では、C API および Java Messaging Service (JMS) API のサブセットである Java API の、ENS の 2 つの API について説明します。iPlanet Messaging Server 5.2 および Sun ONE 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

    パブリッシャが購読対象イベントの通知を ENS に送信すると、ENS はこれをサブスクライバに配信します。Sun ONE Calendar Server では、アプリケーションが通知の受信に対する肯定応答を要求することもできます。これを行うには、RENL (高信頼イベント通知リンク) が必要です。RENL は、パブリッシャ、サブスクライバ、および肯定応答の対象になる通知を識別する一意の ID で構成されます。パブリッシャは、publish_a に渡される end2end_ack コールバックを呼び出して、アプリケーションに肯定応答の受信を知らせます。現在のところ、Sun ONE Calendar Server だけが RENL をサポートしています。

  • サブスクライバ API

    サブスクライバは、特定のイベントを配信対象にする通知サービスに対するクライアントです。通知サービスは、これらのイベントのうちの 1 つに関する通知をパブリッシャから受信すると、サブスクライバにその通知を中継します。

    サブスクライバは購読を解除 (有効な購読をキャンセル) することもできます。

    Sun ONE Calendar Server で RENL を使用可能にするには、サブスクライバが ENS に対してその存在を宣言し、次に ENS がサブスクライバアプリケーションに代わって通知の肯定応答を透過的に作成します。サブスクライバは、いつでも RENL を廃棄できます。

  • 公開および購読ディスパッチャ API

    非同期パブリッシャを使用する場合、ENS は、コールバックを呼び出すためにスレッドプールからスレッドを借りる必要があります。アプリケーションは、独自のスレッドプールを作成して ENS に渡すことも、あるいはENS に独自のスレッドプールを作成して管理させることもできます。どちらの場合も、ENS はディスパッチャオブジェクトの作成して、使用するディスパッチャ (pas_dispatcher_t) をインスタンス化に利用できます。

    GDisp (libasync) は、サポートされているディスパッチャです。


ENS Java API の概要

ENS 用 Java API では、標準 JMS API のサブセットとともに、次の 2 つの新しい専用メソッドを使用しています。

  • com.iplanet.ens.jms.EnsTopicConnFactory

  • com.iplanet.ens.jms.EnsTopic

次の JMS オブジェクトクラスのリストは、ENS 用 Java API で使用されるものです。

  • javax.jms.TopicSubscriber

  • javax.jms.TopicSession

  • javax.jms.TopicPublisher

  • javax.jms.TopicConnection

  • javax.jms.TextMessage

  • javax.jms.Session

  • javax.jms.MessageProducer

  • javax.jms.MessageConsumer

  • javax.jms.Message

  • javax.jms.ConnectionMetaData

  • javax.jms.Connection



    ENS 用 Java API は、すべての JMS オブジェクトクラスを実装しているわけではありません。カスタマイズするときは、このリストにあるオブジェクトクラスだけを使用してください。




カスタムアプリケーションの構築と実行

ユーザ自身のカスタムパブリッシャとサブスクライバアプリケーションの構築を支援するために、iPlanet Messaging Server および Sun ONE Calendar Server にはコーディング例が含まれています。この節では、コーディング例、API のインクルード (ヘッダー) ファイルの場所、およびカスタムプログラムの構築と実行に必要なライブラリの場所を示します。



この節の説明は、C API にのみ適用されます。




コーディング例の場所


Sun ONE Calendar Server
Sun ONE Calendar Server には、初めての構築を支援するために、4 つの簡単なサンプルプログラムが含まれています。これらのコーディング例は、次のディレクトリにあります。

/opt/SUNWics5/cal/csapi/samples/ens


iPlanet Messaging Server
iPlanet Messaging Server 5.1 以降には、通知を受信する方法の理解を支援するためのサンプルプログラムが含まれています。これらのサンプルプログラムは、server-root/bin/msg/enssdk/examples ディレクトリにあります。


インクルードファイルの場所


Sun ONE Calendar Server
パブリッシャおよびサブスクライバ API には、 publisher.hsuscriber.h および、pasdisp.h (公開および購読ディパッチャ) のインクルード (ヘッダー) ファイルがあります。これらのファイルは、CSAPI include ディレクトリにあります。デフォルトの include パスは、次のとおりです。

/opt/SUNWics5/cal/csapi/include


iPlanet Messaging Server
デフォルトの iPlanet Messaging Server の include パスは、次のとおりです。

server-root/bin/msg/enssdk/include


動的にリンクまたは共有されるライブラリ


Sun ONE Calendar Server
カスタムコードは、動的にリンクされる libens ライブラリとリンクする必要があります。 このライブラリには、パブリッシャおよびサブスクライバの API が実装されています。一部のプラットフォームでは、libens に従属するすべてのライブラリを、リンク指示の一部に含める必要があります。それらの従属ライブラリを順番に示します。

  1. libgap

  2. libcyrus

  3. libyasr

  4. libasync

  5. libnspr3

  6. libplsd4

  7. libplc3

上記のライブラリは、Sun ONE Calendar Server で使用されるため、サーバの bin ディレクトリに配置されています。デフォルトの libens パスは、次のとおりです。

/opt/SUNWics5/cal/bin



Windows NT の場合、パブリッシャおよびサブスクライバアプリケーションを構築するには、上記のすべてのライブラリに対応するアーカイブファイル (.lib ファイル) も必要となります。アーカイブファイルは、CSAPI ライブラリのディレクトリ lib にあります。デフォルトの lib パスは、次のとおりです。

drive:\Program Files\iPlanet\cal\csapi\lib




iPlanet Messaging Server
iPlanet Messaging Server のライブラリは、次のディレクトリにあります。

server-root/bin/msg/lib

必要なライブラリを判断するには、
server-root/bin/msg/enssdk/examples/Makefile.sample を参照してください。 この Makefile には、apub プログラムと asub プログラムをコンパイルして実行する方法に関する指示が含まれています。また、このファイルは、必要なライブラリ、および LD_LIBRARY_PATH の形式についても説明しています。

図 1-4    Makefile.sample ファイル

#
# Sample makefile
#
# your C compiler
CC = gcc

# LIBS
# Your library path should include <server-root>/bin/msg/lib
LIBS = -lens -lgap -lxenp -lcyrus -lchartable -lyasr -lasync

all: apub asub

apub: apub.c
$(CC) -o apub -I ../include apub.c $(LIBS)

asub: asub.c
$(CC) -o asub -I ../include asub.c $(LIBS)

run:
@echo 'run <server-root>/msg-<instance>/start-ens'
@echo run asub localhost 7997
@echo run apub localhost 7997



Windows NT には、次のファイルが追加されています。

server-root\bin\msg\enssdk\examples

bin\msg\enssdk\examples\libens.lib

bin\msg\enssdk\examples\libgap.lib

bin\msg\enssdk\examples\libxenp.lib

bin\msg\enssdk\examples\libcyrus.lib

bin/msg\enssdk\examples\libchartable.lib

bin\msg\enssdk\examples\libyasr.lib

bin\msg\enssdk\examples\libasync.lib

bin\msg\enssdk\examples\asub.dsw

>bin\msg\enssdk\examples\apub.dsp

bin\msg\enssdk\examples\asub.dsp

Windows NT 上で構築するには、次の手順に従います。

  1. asub.dsw に、サンプル VC++ ワークスペースが用意されています。 その中には、 asub.dsp および apub.dspという、2 つのプロジェクトがあります。

    リンクする必要のある .lib ファイルは、asub.c および apub.c と同じディレクトリにあります。

  2. 実行するには、パスに次の DLL が必要になります。

    libens.dll
    libgap.dll
    libxenp.dll
    libcyrus.dll
    libchartable.dll
    libyasr.dll
    libasync.dll

    この作業を最も簡単に行う方法は、PATH\msg\libserver-root を入れることです。




実行時ライブラリパス変数


Sun ONE Calendar Server
/opt/SUNWics5/cal/bin ディレクトリにある、カスタムプログラムで必要な実行時ライブラリを検出するためには、ユーザ環境の実行時ライブラリパスの変数に必ずこのディレクトリを入れます。この変数の名前は、プラットフォームによって異なります。

  • SunOS および Linux: LD_LIBRARY_PATH

  • Winidows NT: PATH

  • HPUX: SHLIB_PATH


iPlanet Messaging Server
iPlanet Messaging Server では、LD_LIBRARY_PATHserver-root/bin/msg/lib に設定します。


前へ     目次     索引     次へ     
Copyright 2002 Sun Microsystems, Inc. All rights reserved.

最終更新日 2002 年 8 月 30 日