我正在使用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“,我错过了。
答案 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条目应与上述条目匹配。