java - WildFly 外部上下文 - LDAP

标签 java wildfly

我正在使用 WildFly 8.2 并设置以下外部上下文

<subsystem xmlns="urn:jboss:domain:naming:2.0">
  <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://example.com:389"/>
             <property name="java.naming.security.authentication" value="simple"/>
             <property name="java.naming.security.principal" value="CN=exampleuser,DC=example,DC=com"/>
             <property name="java.naming.security.credentials" value="examplepassword"/>
           </environment>
        </external-context>
     </bindings>
   <remote-naming/>
</subsystem>

我尝试使用此外部上下文通过以下代码连接到 Active Directory:

@Resource(lookup = "java:global/ldap")
private LdapContext ldapCtx;

NamingEnumeration<SearchResult> enumeration = ldapCtx.search();

我收到以下错误:

Caused by: java.lang.IllegalArgumentException: JBAS016081: Error injecting resource into CDI managed bean. Can't find a resource named java:global/ldap defined on private javax.naming.ldap.LdapContext com.example.LdapClient.ldapCtx

如果我将代码更改为

@Resource(lookup = "java:global/ldap")
private InitialDirContext iniCtx;
LdapContext ldapCtx = (LdapContext) iniCtx;
NamingEnumeration<SearchResult> enumeration = ldapCtx.search();

我明白

Caused by: javax.naming.NamingException: JBAS011878: Failed to lookup ldap [Root exception is java.lang.RuntimeException: java.lang.NoSuchMethodException: javax.naming.ldap.LdapContext.<init>(java.util.Hashtable)]

最佳答案

看起来您已将上下文的类设置为命名子系统中的 LdapContext 接口(interface)。我相信(如果我错了,请纠正我,因为我已经有一段时间没有做过这方面的工作了)这需要是一个实际的实现类,即 InitialDirContext、InitialLdapContext 等。然后您需要相应地修改您的@Resource注入(inject)。

我更愿意对此发表评论,但积分不够。 :)

关于java - WildFly 外部上下文 - LDAP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27512017/

相关文章:

java - if 和 else 语句 Java 试图停止一条语句

java - 延迟从 admob 加载横幅广告

java - 我想使用 intellij 将 Wildfly 绑定(bind)到我的 IP 地址

java - 缺少依赖 Resteasy 和 Wildfly

java - Wildfly EAR 部署的应用程序位置路径

java - "WFLYJMX0012: params and description have different lengths"以编程方式停止 Wildfly 时

java - 从java中的二维数组中获取列

java - 查询 ParseObject

带有脚本参数的 Docker 入口点

Java OpenSSL 验证和获取公钥