文档

Java™ 教程
隐藏目录
管理Referral控制
指南:Java命名和目录接口
课程:JDK 5.0和JDK 6中的新功能

管理引荐控制

管理引荐控制(RFC 3296)在执行LDAP操作时,使得引荐和其他特殊对象能够像普通对象一样进行操作。换句话说,管理引荐控制告诉LDAP服务器返回引荐条目作为普通条目,而不是返回“引荐”错误响应或继续引用。JDK 5.0中的新类可以让您在LDAP请求中发送管理引荐控制:

javax.naming.ldap.ManageReferralControl

JDK中的LDAP服务提供程序会自动随任何请求一起发送此控制。您还可以通过将Context.REFERRAL环境属性设置为“ignore”来显式启用它。有关引荐处理的更多信息,请参阅JNDI教程的“JNDI中的引荐”部分。

以下是发送管理引荐控制的示例:

// 创建初始上下文
LdapContext ctx = (LdapContext) new InitialDirContext(env);
ctx.setRequestControl(new Control[] new ManageReferralControl());

// 为执行子树搜索设置控制
SearchControls ctls = new SearchControls();
ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);

// 执行搜索
NamingEnumeration answer = ctx.search("", "(objectclass=*)", ctls);

// 打印答案
while (answer.hasMore()) {
    System.out.println(">>>" + 
        ((SearchResult)answer.next()).getName());
}

// 完成后关闭上下文
ctx.close();

完整示例可以在这里找到。


注意 1:上述示例需要您使用配置文件refserver.ldif设置第二个服务器。该服务器必须支持LDAP v3和RFC 3296。如果服务器不以这种方式支持引荐,那么示例将无法正常工作。配置文件包含指向您设置的原始服务器的引荐。它假设原始服务器位于本地机器上的389端口。如果您在其他机器或端口上设置了服务器,则需要编辑refserver.ldif文件中的“ref”条目,并将“localhost:389”替换为适当的设置。第二个服务器需要在本地机器上的489端口上设置。如果您将第二个服务器设置在其他机器或端口上,则需要相应地调整初始上下文的Context.PROVIDER_URL环境属性的设置。

设置目录服务器通常由目录或系统管理员执行。有关更多信息,请参阅软件设置教程。

注意 2:Windows Active Directory:由于Active Directory不支持管理引荐控制,因此本课程中的所有示例都无法在Active Directory上运行。



上一页:排序控制
下一页:操作LdapName(分隔名称)