2016-11-17 102 views
0

我是新來ldap和jndi資源,甚至是jboss(lol),我試圖找出如何使這個工作。我需要連接一個LDAP服務器,該服務器的配置在Jboss standalone.xml文件中定義,並且需要通過java中的jndi訪問它。LDAP jndi連接(java + jboss eap 6)

我在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) 

我已經嘗試了很多不同的例子,但我不能得到任何工作...

在此先感謝。

回答

0

最後我解決了這個問題,使用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"); 

我得到正確的背景下,我希望這可以幫助別人。