public final class PagedResultsControl extends BasicControl
このクラスの使用方法を示すコーディング例を次に示します。
// Open an LDAP association
LdapContext ctx = new InitialLdapContext();
// Activate paged results
int pageSize = 20; // 20 entries per page
byte[] cookie = null;
int total;
ctx.setRequestControls(new Control[]{
new PagedResultsControl(pageSize, Control.CRITICAL) });
do {
// Perform the search
NamingEnumeration results =
ctx.search("", "(objectclass=*)", new SearchControls());
// Iterate over a batch of search results
while (results != null && results.hasMore()) {
// Display an entry
SearchResult entry = (SearchResult)results.next();
System.out.println(entry.getName());
System.out.println(entry.getAttributes());
// Handle the entry's response controls (if any)
if (entry instanceof HasControls) {
// ((HasControls)entry).getControls();
}
}
// Examine the paged results control response
Control[] controls = ctx.getResponseControls();
if (controls != null) {
for (int i = 0; i < controls.length; i++) {
if (controls[i] instanceof PagedResultsResponseControl) {
PagedResultsResponseControl prrc =
(PagedResultsResponseControl)controls[i];
total = prrc.getResultSize();
cookie = prrc.getCookie();
} else {
// Handle other response controls (if any)
}
}
}
// Re-activate paged results
ctx.setRequestControls(new Control[]{
new PagedResultsControl(pageSize, cookie, Control.CRITICAL) });
} while (cookie != null);
// Close the LDAP association
ctx.close();
...
このクラスは、RFC 2696で定義されている、ページごとに区切られた結果のLDAPv3コントロールを実装します。このコントロールの値のASN.1定義は次のとおりです。
realSearchControlValue ::= SEQUENCE {
size INTEGER (0..maxInt),
-- requested page size from client
-- result set size estimate from server
cookie OCTET STRING
}
PagedResultsResponseControl
, 直列化された形式修飾子と型 | フィールドと説明 |
---|---|
static String |
OID
ページごとに区切られた結果のコントロールに割り当てられているオブジェクト識別子は1.2.840.113556.1.4.319です。
|
criticality, id, value
CRITICAL, NONCRITICAL
コンストラクタと説明 |
---|
PagedResultsControl(int pageSize, boolean criticality)
1ページ当たりに取得する結果のエントリ数を設定するためのコントロールを構築します。
|
PagedResultsControl(int pageSize, byte[] cookie, boolean criticality)
1ページ当たりに取得する結果のエントリ数を設定するためのコントロールを構築します。
|
public PagedResultsControl(int pageSize, boolean criticality) throws IOException
pageSize
- 1ページで返すエントリの数。criticality
- trueの場合、サーバーはこのコントロールに従い、pageSizeで示されたとおりに検索結果を返すか、または検索の実行を拒否する必要がある。falseの場合、サーバーはこのコントロールに従う必要はない。IOException
- 指定された引数のコントロールへのエンコード中にエラーが検出された場合。public PagedResultsControl(int pageSize, byte[] cookie, boolean criticality) throws IOException
一連の結果ページを途中で放棄するには、pageSizeを0に設定し、Cookieをサーバーから最後に受け取ったCookieに設定します。
pageSize
- 1ページで返すエントリの数。cookie
- サーバーで生成されたCookie。nullの場合もある。criticality
- trueの場合、サーバーはこのコントロールに従い、pageSizeで示されたとおりに検索結果を返すか、または検索の実行を拒否する必要がある。falseの場合、サーバーはこのコントロールに従う必要はない。IOException
- 指定された引数のコントロールへのエンコード中にエラーが検出された場合。 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.