2023年6月21日发(作者:)

命令方式对查询进行排序

D:utrustsysteminstalledOpenLDAP>ldapsearch -x -h localhost -D "uid=admin,ou=p

erson,ou=utrust,dc=chinautrust,dc=com" -b "ou=person,ou=utrust,dc=chinautrust,dc

=com" -w "admin" -S "uidaleph"

LDAP分页和排序(JDK自带)

tualListViewControl;

import ption;

import ble;

import t;

import Enumeration;

import Exception;

import Controls;

import Result;

import l;

import trols;

import lLdapContext;

import ntext;

import ntrol;

public class SortLDAP {

public static void main(String[] args) throws NamingException, IOException {

Hashtable m_env = new Hashtable(5, );

m_(L_CONTEXT_FACTORY,

"xFactory");

//m_("n", "3");

m_(ER_URL, "ldap://192.168.0.111:389");

m_(TY_AUTHENTICATION, "simple");

m_(TY_PRINCIPAL, "cn=Directory Manager");

m_(TY_CREDENTIALS, "password12345");

// Open an LDAP association

LdapContext ctx = new InitialLdapContext(m_env, null); // Activate sorting

String sortKey = "uid";

int beforeCount = 0;

int afterCount = 0;

int nTargetOffset = 0;

int nPageSize = 5;

VirtualListViewControl vctl = new VirtualListViewControl(nTargetOffset, beforeCount,

afterCount, nPageSize, AL);

uestControls(new Control[]{new SortControl(sortKey,

AL),vctl});

String[] retAtt = {"uid"};

SearchControls constraints = new SearchControls();

rchScope(E_SCOPE);

urningAttributes(retAtt);

// uestControls(new Control[]{new PagedResultsControl(2)});

// Perform a search

NamingEnumeration results =

("ou=person,ou=utrust,dc=chinautrust,dc=com", "(objectclass=*)",

constraints);

// Iterate over search results

while (results != null && e()) {

// Display an entry

SearchResult entry = (SearchResult) ();

n(ributes());

// Handle the entry's response controls (if any)

if (entry instanceof HasControls) {

// ((HasControls)entry).getControls();

}

}

// Close the LDAP association

();

}

}

LDAP数据排序(netscape包)

import mpareAttrNames;

import nnection;

import try;

import ception;

import ferralException;

import archResults;

import tionPool;

public class LdapUtils {

private static final String HOST = "localhost";

private static final int PORT = 389;

private static final int MIN_CONN_SIZE = 1;

private static final int MAX_CONN_SIZE = 5;

private static final String USER_ID = "cn=Manager,dc=chinautrust,dc=com";

private static final String PASSWORD = "password12345";

private static ConnectionPool connPool;

static {

try {

connPool = new ConnectionPool(MIN_CONN_SIZE, MAX_CONN_SIZE, HOST,

PORT);

} catch (LDAPException e) {

String message = "Failed to init Ldap connection pool";

n(message);

}

}

public static ConnectionPool getConnectionPool() {

return ol;

}

public static LDAPConnection getConnection() {

LDAPConnection conn = nectionPool().getConnection();

try {

ticate(USER_ID, PASSWORD);

} catch (LDAPException e) {

String message = "Failed to authen the system ldap user";

n(message); }

return conn;

}

public static void closeConnection(LDAPConnection conn) {

nectionPool().close(conn);

}

public static void main(String[] args) throws Exception{

LDAPConnection con = nection();

String[] ATTRS = {"uidaleph"};

LDAPSearchResults res =

("ou=person,ou=utrust,dc=chinautrust,dc=com",_SUB,"uid=*",ATTRS,false);

LDAPCompareAttrNames compareAttrNames = new

LDAPCompareAttrNames("uidaleph", true);

(compareAttrNames);

while (eElements()) {

try {

// Next directory entry

LDAPEntry entry = ();

n(entry);

} catch (LDAPReferralException e) {

// Ignore referrals

continue;

} catch (LDAPException e) {

n(ng());

continue;

}

}

n("-----------------------");

}

}

总结

1、PagedResultsControl分页处理 即uestControls(new Control[]{new SortControl(sortKey, AL),new

PagedResultsControl(2, AL) });语句

Windows活动目录支持分页查询control。Sun Java目录服务器 v5.2不支持。

VirtualListViewControl分页查询control Sun Java目录服务器支持。

2、JDK自带排序control。

Sun Java目录服务器和Windows活动目录都支持排序control。OpenLDAP和Domino不支持。

2023年6月21日发(作者:)

命令方式对查询进行排序

D:utrustsysteminstalledOpenLDAP>ldapsearch -x -h localhost -D "uid=admin,ou=p

erson,ou=utrust,dc=chinautrust,dc=com" -b "ou=person,ou=utrust,dc=chinautrust,dc

=com" -w "admin" -S "uidaleph"

LDAP分页和排序(JDK自带)

tualListViewControl;

import ption;

import ble;

import t;

import Enumeration;

import Exception;

import Controls;

import Result;

import l;

import trols;

import lLdapContext;

import ntext;

import ntrol;

public class SortLDAP {

public static void main(String[] args) throws NamingException, IOException {

Hashtable m_env = new Hashtable(5, );

m_(L_CONTEXT_FACTORY,

"xFactory");

//m_("n", "3");

m_(ER_URL, "ldap://192.168.0.111:389");

m_(TY_AUTHENTICATION, "simple");

m_(TY_PRINCIPAL, "cn=Directory Manager");

m_(TY_CREDENTIALS, "password12345");

// Open an LDAP association

LdapContext ctx = new InitialLdapContext(m_env, null); // Activate sorting

String sortKey = "uid";

int beforeCount = 0;

int afterCount = 0;

int nTargetOffset = 0;

int nPageSize = 5;

VirtualListViewControl vctl = new VirtualListViewControl(nTargetOffset, beforeCount,

afterCount, nPageSize, AL);

uestControls(new Control[]{new SortControl(sortKey,

AL),vctl});

String[] retAtt = {"uid"};

SearchControls constraints = new SearchControls();

rchScope(E_SCOPE);

urningAttributes(retAtt);

// uestControls(new Control[]{new PagedResultsControl(2)});

// Perform a search

NamingEnumeration results =

("ou=person,ou=utrust,dc=chinautrust,dc=com", "(objectclass=*)",

constraints);

// Iterate over search results

while (results != null && e()) {

// Display an entry

SearchResult entry = (SearchResult) ();

n(ributes());

// Handle the entry's response controls (if any)

if (entry instanceof HasControls) {

// ((HasControls)entry).getControls();

}

}

// Close the LDAP association

();

}

}

LDAP数据排序(netscape包)

import mpareAttrNames;

import nnection;

import try;

import ception;

import ferralException;

import archResults;

import tionPool;

public class LdapUtils {

private static final String HOST = "localhost";

private static final int PORT = 389;

private static final int MIN_CONN_SIZE = 1;

private static final int MAX_CONN_SIZE = 5;

private static final String USER_ID = "cn=Manager,dc=chinautrust,dc=com";

private static final String PASSWORD = "password12345";

private static ConnectionPool connPool;

static {

try {

connPool = new ConnectionPool(MIN_CONN_SIZE, MAX_CONN_SIZE, HOST,

PORT);

} catch (LDAPException e) {

String message = "Failed to init Ldap connection pool";

n(message);

}

}

public static ConnectionPool getConnectionPool() {

return ol;

}

public static LDAPConnection getConnection() {

LDAPConnection conn = nectionPool().getConnection();

try {

ticate(USER_ID, PASSWORD);

} catch (LDAPException e) {

String message = "Failed to authen the system ldap user";

n(message); }

return conn;

}

public static void closeConnection(LDAPConnection conn) {

nectionPool().close(conn);

}

public static void main(String[] args) throws Exception{

LDAPConnection con = nection();

String[] ATTRS = {"uidaleph"};

LDAPSearchResults res =

("ou=person,ou=utrust,dc=chinautrust,dc=com",_SUB,"uid=*",ATTRS,false);

LDAPCompareAttrNames compareAttrNames = new

LDAPCompareAttrNames("uidaleph", true);

(compareAttrNames);

while (eElements()) {

try {

// Next directory entry

LDAPEntry entry = ();

n(entry);

} catch (LDAPReferralException e) {

// Ignore referrals

continue;

} catch (LDAPException e) {

n(ng());

continue;

}

}

n("-----------------------");

}

}

总结

1、PagedResultsControl分页处理 即uestControls(new Control[]{new SortControl(sortKey, AL),new

PagedResultsControl(2, AL) });语句

Windows活动目录支持分页查询control。Sun Java目录服务器 v5.2不支持。

VirtualListViewControl分页查询control Sun Java目录服务器支持。

2、JDK自带排序control。

Sun Java目录服务器和Windows活动目录都支持排序control。OpenLDAP和Domino不支持。