java - LDAP jndi 连接(java + jboss eap 6)

标签 java jboss ldap jboss7.x jndi

我是 ldap 和 jndi 资源甚至 jboss 的新手(哈哈),我正在尝试弄清楚如何使其工作。我需要连接一个 LDAP 服务器,该服务器的配置在 Jbossstandalone.xml 文件中定义,并且需要通过 java 中的 jndi 访问它。

我已经在standalone.xml 和external-context 中定义了与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 作为外部上下文的类。

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");

我正确地理解了上下文,我希望这可以帮助其他人。

关于java - LDAP jndi 连接(java + jboss eap 6),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40650986/

相关文章:

java - KryoNet - 如何使用 Boolean xx = new clientprocess(); 启动客户端获得返回值?

java - ClassLoader 类未在线程中正确加载

asp.net - 如何找出在我的 Windows 域上托管 LDAP 的服务器?

java - 如何在java中链接ghost脚本来减小PDF大小?

java - 创建.java文件并在运行时将其编译为.class文件

java - 如何以编程方式知道服务器是否正在运行?

ldap - 我如何在 J2SE 中使用 Novell eDirectory 服务?

java - Spring-Security-Ldap - 如何报告锁定帐户

java - Selenium (Geb) 显示空白页并且有时会失败

java - 是什么导致 JBoss 7.1.1 中出现此 SQL/Hibernate 错误?