簡體   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