LDAP jndi 连接 (java + jboss eap 6)
LDAP jndi connection (java + jboss eap 6)
我是 ldap 的新手,也是 jndi 资源的新手,甚至是 jboss 的新手(笑),我正在尝试弄清楚如何让它工作。我需要连接配置在 Jboss standalone.xml 文件中定义的 LDAP 服务器,并且需要通过 java.
中的 jndi 访问它
我在 standalone.xml 中定义了与 LDAP 连接的外部上下文:
<subsystem xmlns="urn:jboss:domain:naming:1.4">
<bindings>
<external-context name="java:global/ldap" module="org.jboss.as.naming" class="javax.naming.ldap.InitialLdapContext" cache="true">
<environment>
<property name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
<property name="java.naming.provider.url" value="ldap://host:port"/>
<property name="java.naming.security.authentication" value="simple"/>
<property name="java.naming.security.principal" value="user"/>
<property name="java.naming.security.credentials" value="password"/>
</environment>
</external-context>
</bindings>
<remote-naming/>
</subsystem>
然后在 java 我有这个代码:
InitialLdapContext ctx = new InitialLdapContext();
LdapContext ldapContext = null;
ldapContext = (LdapContext) ctx.lookup("java:global/ldap"));
但是执行查找时出现以下错误:
java.lang.NoSuchMethodException: javax.naming.ldap.InitialLdapContext.<init>(java.util.Hashtable)
我已经尝试了很多不同的例子,但我无法得到任何工作...
提前致谢。
最后我这样解决了,使用 InitialDirContext 作为外部上下文的 class。
standalone.xml:
<subsystem xmlns="urn:jboss:domain:naming:1.4">
<bindings>
<external-context name="java:global/ldap" module="org.jboss.as.naming" class="javax.naming.directory.InitialDirContext" cache="true">
<environment>
<property name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
<property name="java.naming.provider.url" value="ldap://host:port"/>
<property name="java.naming.security.authentication" value="simple"/>
<property name="java.naming.security.principal" value="user"/>
<property name="java.naming.security.credentials" value="password"/>
</environment>
</external-context>
</bindings>
<remote-naming/>
</subsystem>
在java:
InitialDirContext ldapContext = new InitialDirContext();
ldapContext = (InitialDirContext) new InitialContext().lookup("java:global/ldap");
而且我得到了正确的上下文,我希望这可以帮助其他人。
我是 ldap 的新手,也是 jndi 资源的新手,甚至是 jboss 的新手(笑),我正在尝试弄清楚如何让它工作。我需要连接配置在 Jboss standalone.xml 文件中定义的 LDAP 服务器,并且需要通过 java.
中的 jndi 访问它我在 standalone.xml 中定义了与 LDAP 连接的外部上下文:
<subsystem xmlns="urn:jboss:domain:naming:1.4">
<bindings>
<external-context name="java:global/ldap" module="org.jboss.as.naming" class="javax.naming.ldap.InitialLdapContext" cache="true">
<environment>
<property name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
<property name="java.naming.provider.url" value="ldap://host:port"/>
<property name="java.naming.security.authentication" value="simple"/>
<property name="java.naming.security.principal" value="user"/>
<property name="java.naming.security.credentials" value="password"/>
</environment>
</external-context>
</bindings>
<remote-naming/>
</subsystem>
然后在 java 我有这个代码:
InitialLdapContext ctx = new InitialLdapContext();
LdapContext ldapContext = null;
ldapContext = (LdapContext) ctx.lookup("java:global/ldap"));
但是执行查找时出现以下错误:
java.lang.NoSuchMethodException: javax.naming.ldap.InitialLdapContext.<init>(java.util.Hashtable)
我已经尝试了很多不同的例子,但我无法得到任何工作...
提前致谢。
最后我这样解决了,使用 InitialDirContext 作为外部上下文的 class。
standalone.xml:
<subsystem xmlns="urn:jboss:domain:naming:1.4">
<bindings>
<external-context name="java:global/ldap" module="org.jboss.as.naming" class="javax.naming.directory.InitialDirContext" cache="true">
<environment>
<property name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
<property name="java.naming.provider.url" value="ldap://host:port"/>
<property name="java.naming.security.authentication" value="simple"/>
<property name="java.naming.security.principal" value="user"/>
<property name="java.naming.security.credentials" value="password"/>
</environment>
</external-context>
</bindings>
<remote-naming/>
</subsystem>
在java:
InitialDirContext ldapContext = new InitialDirContext();
ldapContext = (InitialDirContext) new InitialContext().lookup("java:global/ldap");
而且我得到了正确的上下文,我希望这可以帮助其他人。