InfoDirectory使用手引書 |
目次 索引 |
第3部 SDK編 | > 第5章 アプリケーション開発環境(LDAP C API) | > 5.1 クライアントAPIライブラリの機能 | > 5.1.5 LDAPコントロール |
result情報のページング処理におけるコントロールリクエストの形式は、以下のインターネットドラフトに記述されています。
RFC2696 : “LDAP Control Extension for Simple Paged Results Manipulation”
処理の概要
検索で多数のエントリがヒットした場合、ヒットしたエントリ情報を一度にクライアントへ送信すると、クライアント側の資源や処理能力を超えてしまう可能性があります。
LDAP V2では、このような事態が発生することを防止するために、サイズリミットを設定できるようになっていました。しかし、サイズリミットを設定すると、サイズリミットを超えた分のエントリ情報は破棄されてしまうため、この部分の情報をクライアントが受取ることができませんでした。
LDAP V3では、この問題を解決するために、クライアントとInfoDirectoryサーバとの間でページング処理を行うことができるようになっています。
ページング処理とは、InfoDirectoryサーバ側において検索結果のエントリ情報を複数のページに分割し、クライアントとの間で同期をとりながら、ページ単位でクライアントに送信する機能です。
1ページごとのエントリ数は、サイズリミット未満で0より大きい数をクライアントから指定します。以下に例を示します。
図: ページング処理の例
ページング処理の流れ
クライアントは、検索要求にpagedResultsControlを付加してInfoDirectoryサーバに送信します。この時、コントロールリクエストのcookieには、NULL文字列を設定します。cookieにより、InfoDirectoryサーバはこの要求が前回の続きであるかどうか識別します。NULL文字列の場合、これがページング処理の開始を示しています。
InfoDirectoryサーバは、クライアントが指定したページサイズ分のエントリ情報を送信します。
InfoDirectoryサーバは、検索の途中経過をクライアントに通知します。この時、result情報に付加されているpagedResultsControlには、全エントリ数と、Cookieの文字列が設定されています。
クライアントは、検索要求にpagedResultsControlを付加してInfoDirectoryサーバに送信します。この時、コントロールリクエストのcookieには、直前のresult情報で通知されたCookieの文字列を設定します。
InfoDirectoryサーバは、前回受信したものに続くエントリ情報を1ページ分、クライアントに送信します。
InfoDirectoryサーバは、検索の最終結果をクライアントに通知します。この時、result情報に付加されているpagedResultsControlのcookieには、NULL文字列が設定されています(これが、ページング処理の終了を示しています)。
リクエスト
result情報のページング処理を使用する場合、InfoDirectoryサーバへの要求を発行する際に、サーバコントロールに以下のデータを指定します。
realSearchControlValue ::= SEQUENCE { |
コントロールリクエストに指定するデータは、BERエンコードしたものを指定します。
目次 索引 |