Java教程是针对JDK 8编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
有关Java SE 9及其后续版本中更新的语言特性的摘要,请参阅Java语言更改。
有关所有JDK版本的新功能、增强功能和已删除或不推荐选项的信息,请参阅JDK发布说明。
以下是构建访问LDAP目录服务器的Java应用程序所涉及的步骤:
前两个步骤在上一节中已经涵盖。本课程的其余部分将讨论第三步和第四步的一部分。第五步涉及编写JNDI应用程序的内容将在下一课中介绍,该课程将展示如何编写JNDI应用程序来执行目录上的各种操作。
一旦您设置了目录,或者将程序指向与现有目录进行通信,您可以在那里找到什么样的信息呢?
目录可以被视为由名称到对象的绑定组成。也就是说,目录中的每个对象都有一个对应的名称。您可以通过查找名称来检索目录中的对象。
目录中还存储了属性。目录中的对象除了有一个名称之外,还有一组可选的属性。您可以询问目录对象的属性,以及要求它搜索具有特定属性的对象。
架构指定目录可能包含的对象类型。本教程将使用条目填充目录,其中一些条目需要特殊的架构定义。为了适应这些条目,您首先要么关闭服务器中的架构检查,要么将本教程附带的架构文件添加到服务器中。这两个任务通常由目录服务器的管理员执行。
本教程附带两个必须安装的架构文件:
这些文件的格式是一个正式的描述,可能无法直接复制和粘贴到服务器配置文件中。具体来说,属性语法是根据RFC 2252描述的。
不同的目录服务器有不同的配置模式。本教程提供了一些工具,用于在支持通过LDAP修改其模式的目录服务器上安装Java和CORBA模式。以下是工具可以执行的任务列表。
请按照附带的 README文件
中的说明来运行这些程序。
注意:Windows Active Directory。 Active Directory通过使用内部格式来管理其模式。要更新模式,您可以使用Active Directory Management Console插件ADSIEdit或CreateJavaSchema实用程序,并按照Active Directory的说明进行操作。
本教程的示例中显示的结果反映了使用随附本教程的配置文件( tutorial.ldif
)设置的LDAP目录的情况。如果您正在使用现有服务器或具有不同设置的服务器,则可能会看到不同的结果。在将配置文件( tutorial.ldif
)加载到目录服务器之前,您必须按照更新服务器模式的说明进行操作,或者如果UNIX系统上有ldapadd或ldapmodify命令,您可以使用它们。
例如,使用ldapmodify,您可以执行以下操作(根据主机名、管理员DN(-D选项)和密码填入适当的值):
ldapmodify -a -c -v -h 主机名 -p 389\ -D "cn=Administrator, cn=users, dc=xxx, dc=xxx"\ -w 密码 -f tutorial.ldif
安装注意事项:访问控制。不同的目录服务器处理访问控制的方式不同。本教程中的一些示例对目录进行了更新。此外,您安装教程的命名空间的部分可能有读取访问限制。因此,为使这些示例工作,您需要采取特定于服务器的操作,使目录可读和/或可更新。对于Oracle Directory Server,请将sunds.aci.ldif
文件中建议的aci条目添加到dn: o=JNDITutorial条目中,以使整个目录可读和可更新。或者,您可以更改示例,以便对目录进行身份验证。如何执行此操作的详细信息在安全性课程中有描述。
安装注意事项:命名空间设置。在tutorial.ldif
文件中,使用了“o=JNDITutorial”作为根命名上下文的区分名称(DN)。如果您没有将目录服务器配置为将“o=JNDITutorial”作为根命名上下文,则导入tutorial.ldif将失败。解决此问题的最简单方法是在tutorial.ldif文件的每个“dn:”行中添加一个现有根命名上下文的DN。例如,如果您的服务器已经具有根命名上下文“dc=imc,dc=org”,那么您应该更改该行
dn: o=JNDITutorial
为
dn: o=JNDITutorial, dc=imc, dc=org
对文件中以“dn:”开头的每一行都进行此更改。然后,在本教程的所有示例中,无论何处使用“o=JNDITutorial”,都改为使用“o=JNDITutorial,dc=imc,dc=org”。
安装注意事项:文件格式。根据您使用的操作系统平台,您可能需要编辑tutorial.ldif,以便其中包含该平台的正确换行符。例如,如果您发现tutorial.ldif包含Windows风格的换行符(CRLF),并且您正在将此文件导入运行在UNIX平台上的目录服务器,则需要编辑该文件并将CRLF替换为LF。此问题的症状是目录服务器拒绝tutorial.ldif中的所有条目。
安装注意事项:Windows Active Directory。
objectclass: organizationalUnit possible superiors: domainDNS inetOrgPerson organization organizationalPerson organizationalUnit person top objectclass: groupOfUniqueNames possible superiors: top objectclass: inetOrgPerson possible superiors: container organizationalPerson person top
# ldifde -i -v -k -f tutorial.ldif