如何在websphere上使用JNDI操作LDAP?

如何在websphere上使用JNDI操作LDAP?,ldap,websphere,jndi,Ldap,Websphere,Jndi,我面临LDAP操作问题。当用户从GUI/浏览器中选择时,我希望动态地将成员添加到LDAP组。我将代码粘贴到下面,当我在测试类中运行它时(使用com.sun.jndi.ldap.LdapCtxFactory),它运行得非常好。但是,当我将其打包到构建中,部署到WebSphereAppServer7.0上(使用com.ibm.websphere.naming.WsnInitialContextFactory),并根据用户的选择调用此方法时,我会得到下面的错误。我不知道我做错了什么。WAS不提供lda

我面临LDAP操作问题。当用户从GUI/浏览器中选择时,我希望动态地将成员添加到LDAP组。我将代码粘贴到下面,当我在测试类中运行它时(使用
com.sun.jndi.ldap.LdapCtxFactory
),它运行得非常好。但是,当我将其打包到构建中,部署到WebSphereAppServer7.0上(使用
com.ibm.websphere.naming.WsnInitialContextFactory
),并根据用户的选择调用此方法时,我会得到下面的错误。我不知道我做错了什么。WAS不提供ldap连接工厂的实现吗?我还尝试使用sun的ldap在WAS上进行部署,该ldap可以在测试类上工作,但我得到了与下面相同的异常。如果有人能提供线索,我将不胜感激

添加成员时出现问题:javax.naming.OperationNotSupportedException:[LDAP:错误代码53-00000561:SvcErr:DSID-031A120C,问题5003(将不执行),数据0

我已经解决了。在这里发布解决方案,希望这对某人有所帮助

  • 使用sun的标准JNDI上下文,而不是websphere
  • 我在哈希表中缺少的其他属性,一旦我添加了它们,它就像一个符咒

    env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");  
    
    //env.put(Context.INITIAL_CONTEXT_FACTORY,"com.ibm.websphere.naming.WsnInitialContextFactory");  
    
    //set security credentials, note using simple cleartext authentication  
    env.put(Context.SECURITY_AUTHENTICATION,"simple");  
    env.put(Context.SECURITY_PRINCIPAL,adminName);  
    env.put(Context.SECURITY_CREDENTIALS,adminPassword);  
    env.put(Context.URL_PKG_PREFIXES, "com.sun.jndi.url");  
    env.put(Context.REFERRAL, "ignore");  
    

  • 好吧,这个问题已经问了一年多了;所以,我不知道回答是否会增加任何价值。但是,答案在这里。有关factory类的实际功能和工作方式的详细信息,请参阅。您可能需要调整WAS的jndiprovider.properties文件。

    好吧,这个问题已经问了一年多了问;所以,我不知道回答会增加任何值。但是,在这里。有关工厂类的实际功能和工作方式的详细信息,请参阅。您可能需要调整WAS的jndiprovider.properties文件。

    哪一行代码引发该异常?哪一行代码引发该异常?
    env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");  
    
    //env.put(Context.INITIAL_CONTEXT_FACTORY,"com.ibm.websphere.naming.WsnInitialContextFactory");  
    
    //set security credentials, note using simple cleartext authentication  
    env.put(Context.SECURITY_AUTHENTICATION,"simple");  
    env.put(Context.SECURITY_PRINCIPAL,adminName);  
    env.put(Context.SECURITY_CREDENTIALS,adminPassword);  
    env.put(Context.URL_PKG_PREFIXES, "com.sun.jndi.url");  
    env.put(Context.REFERRAL, "ignore");