繁体   English   中英

LDAP jndi连接(java + jboss EAP 6)

[英]LDAP jndi connection (java + jboss eap 6)

我对ldap以及jndi资源甚至jboss(lol)都是陌生的,我正试图弄清楚如何使它工作。 我需要连接LDAP服务器,该服务器的配置在Jboss standalone.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");

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM