OpenAM与OpenDJ - NameNotFoundException:ldap / idp / userDN - 启动JBoss时

时间:2014-12-04 08:53:49

标签: spring jboss7.x jndi openam opendj

我正在使用OpenAM,其嵌入式OpenDJ作为LDAP服务,以保护我在JBoss 7上运行的Web应用程序。

当我启动JBoss时出现此错误:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ldapUserDN'
...
Caused by: javax.naming.NameNotFoundException: ldap/idp/userDN -- service jboss.naming.context.java.ldap.idp.userDN

显然,Spring正在寻找JNDI节点 ldap / idp / userDN 。但是我在项目中获得的jboss配置文件包含以下条目:

            <simple name="ldap/opendj/url" value="ldap://localhost:50389"/>
            <simple name="ldap/opendj/userDN" value="cn=Directory Manager"/>
            <simple name="ldap/opendj/password" value="mypassword"/>
            <simple name="ldap/opendj/baseDN" value="dc=opensso,dc=java,dc=net"/>

这些属性被添加到JBoss上的JNDI树中。

如果我将这些更改为“ldap / idp / userDN”,那么我就摆脱了错误,但我想知道是否有任何地方,“ldap / opendj / userDN”应该映射到“ldap / idp / userDN“,我错过了。

1 个答案:

答案 0 :(得分:1)

如果你正在使用Spring LDAP,那么ldap-context-source的实际配置会出现在spring配置文件中,可能如下所示:

<jee:jndi-lookup jndi-name="ldap/idp/url" id="ldapUrl"/>
<jee:jndi-lookup jndi-name="ldap/idp/userDN" id="ldapUserDN"/>
<jee:jndi-lookup jndi-name="ldap/idp/password" id="ldapPassword"/>
<jee:jndi-lookup jndi-name="ldap/idp/baseDN" id="ldapBaseDN"/>
<ldap:context-source url="#{ldapUrl}"  
    username="#{ldapUserDN}"
    password="#{ldapPassword}"      
    base="#{ldapBaseDN}"
    native-pooling="true"/>

因此,jboss配置文件中的jndi条目应与上述条目匹配。