如果在 LDAP 存储库中进行搜索期间发生 javax.naming.NameNotFoundException,请遵循这些故障诊断步骤。
由于在 LDAP 存储库(例如 Microsoft Active Directory)中执行了基于根的搜索,而此存储库不支持基于根的搜索,因此发生 javax.naming.NameNotFoundException。
要验证此问题的原因,请检查 wimconfig.xml 文件基本条目,如以下示例中所示:
<config:baseEntries name="dc=ibm,dc=com" nameInRepository=""/>
此示例中的参数映射到 WebSphere Application Server 管理控制台的存储库引用设置页面中指定的值。
name 参数为此存储库的 virtual member manager 基本条目,此条目在 virtual member manager 领域中必须唯一。设置 LDAP 存储库时,name 参数映射到字段唯一标识领域中此条目集的基本条目的专有名称中指定的值。
nameInRepository 参数为存储库中基本条目的 LDAP 专有名称。 它会指示 LDAP 目录服务器中搜索的启动点。nameInRepository 参数映射到字段此存储库中基本条目的专有名称中指定的值。
设置 LDAP 存储库时,如果此存储库中基本条目的专有名称字段留空,即 nameInRepository="",那么子树会缺省为 LDAP 存储库的根,成为搜索的启动点。这会引起基于根的搜索。如果存储库不支持基于根的搜索,那么 JNDI 搜索会引发 NameNotFoundException,此异常又会导致 virtual member manager 抛出异常。
在 virtual member manager 中配置 LDAP 存储库时设置 LDAP 服务器搜索根。
在 WebSphere Application Server 管理控制台的“存储库引用设置”页面上,如果 LDAP 存储库不支持基于根的搜索,那么不要将此存储库中的基本条目的专有名称留空。
有关访问这些设置的信息,请阅读 WebSphere Application Server 信息中心中的存储库引用设置。