我的iplanet删除、修改和查询都没问题,就是新增出问题,先是说classobject违例,我改了一下就变成第一个异常了。会是什么问题呢?拜托大家帮忙想一想啊!

解决方案 »

  1.   

    麻烦您一下,您能发一份netscape的ldap sdk 包给我吗?
    我单开帖子给分,分数您说!
    急,谢谢了
    [email protected]
      

  2.   

    不好意思,再借宝地一用
    sdk已经收到了,我去开个帖子,请gemoran来取分也希望楼主的问题迅速得到解决,祝好运
      

  3.   

    你好,我实验了你的程序,确实出现你说说的问题,但是我对你的程序不是很清楚,呵呵,我是菜鸟了!有如下问题:
    lp.authenticate("uid=gemoran,ou=People,o=stnc.com.cn,o=stnc.com.cn","xujinglei");
    这两个参数都是什么呀,这个方法的作用是什么?
    还有你检查一下,你的记录具体存放位置好像没有确定啊,是在dn中取定的吗?
    我用php访问ldap增加记录成功过,我相信我们一定会解决的!把你的程序解释一下,我们共同分析一下,ok?
      

  4.   

    是用来验证权限的,看你有没有增加记录的权限。我输的是在安装时用的UID和PWD。有什么好的建议吗?
      

  5.   

    你的这句话好像存在问题
    if(e.getLDAPResultCode()==LDAPException.ENTRY_ALREADY_EXISTS)
    System.out.println("对不起,记录已经存在了!");
    你能把查询,更改,和删除的代码贴上吗,我急着要用,多谢了
      

  6.   

    我的ldap服务器用的是secureway
    因为显示的是乱码,无法用界面手工加entry,所以只好用安装的uid来测试代码
    遇到了同样的问题,是不是帐号的问题呀,你试试手工添加一个entry
    然后用新的entry登陆试试
      

  7.   

    browser只是一个读取的应用程序吧
    这种自己写的代码的读写问题如何用它来解决呢?
    请指点,谢谢
      

  8.   

    String dn="ou=People,o=stnc.com.cn,o=stnc.com.cn";
    lp.authenticate("uid=gemoran,ou=People,o=stnc.com.cn,o=stnc.com.cn","xujinglei");
    我认为这2句有问题,去年我做过一个JAVA安全平台,就是利用LDAP来读取用户数据的,你新增加一个entry的dn没有uid,然后却有double o=stnc.com.cn,
    这样做是为什么?
    在验证权限的时候(authenticate)你加了uid,是不是因为有2个o=stnc.com.cn所以重复了,
    1,要看是否指定了要增加的entry的对象类(objectclass属性)及所需要的属性
    如ou(organizationalUnit),要为一个人加入一个entry,必须先在entry中指定,objectclass,ou.
    2,认证时用户是否具有向目录中ADD ENTRY的访问权限(一般用cn=Directory Manager),这个推荐用ldap browser去ADD EDIT DELE UPDATE,ENTRY试试,
    如果手工能成功,你再把你的代码规范下,应该没错的,
    相对而言,NETSCAPE SDK的文档例子很容易实现的,也没什么精深之处,
    只是小心些应用,GULUCK。
    对了,如果还是不行,查看下你现在用的IPLANET版本,也许就像是
    TOMCAT最新发行版出现的BUG也说不定,我以前没遇到相关的错误,
    都是按例程一次PASS的。
      

  9.   

    贴上我编译执行的代码,改过的地方用//~~~~~added标注
    其中第36行是错误所在,您的dn没有修改,添加的其他部分都是在您的代码中被注释掉的部分
    以后多交流
    import netscape.ldap.*;
    import java.util.*;
    public class addEntry
    {
    public static void main(String[] args)
    {
    System.out.println("Hello World!");
    String dn="ou=unicom";
    LDAPConnection lp=null;
    int status=-1;
    String objectclass_values[] = { "top",                //~~~~~~~~~~~~added
    "person",   //~~~~~~~~~~~~added
    "organizationalPerson",       //~~~~~~~~~~~~added
    "inetOrgPerson" };            //~~~~~~~~~~~~added
    LDAPAttribute attr1=new LDAPAttribute("cn","qiaofeng");
    LDAPAttribute attr2=new LDAPAttribute("givenname","feng");
    LDAPAttribute attr3=new LDAPAttribute("sn","qiao");
    LDAPAttribute attr4=new LDAPAttribute("mail","[email protected]");
    LDAPAttribute attr5=new LDAPAttribute( "objectclass" );//~~~~~~~~~added
    for( int i = 0; i < objectclass_values.length; i++ ) { //~~~~~~~~~added
    attr5.addValue( objectclass_values[i] );           //~~~~~~~~~added
    }      //~~~~~~~~~added
    //String objectclass_values[]={"top","person","organizasionalPerson","inetorgperson","inetUser","inetSubscriber","ipUser","nsManagedPerson"};//
    //LDAPAttribute attr5=new LDAPAttribute("objectclass",objectclass_values);
    //LDAPAttribute attr6=new LDAPAttribute("ou","People");
    LDAPAttribute attr7=new LDAPAttribute("uid","lalazhu");
    LDAPAttributeSet AttrSet=new LDAPAttributeSet();
    AttrSet.add(attr1);
    AttrSet.add(attr2);
    AttrSet.add(attr3);
    AttrSet.add(attr4);
    AttrSet.add(attr5 );//~~~~~~~~~~~~~~~~~~~~~added
    //AttrSet.add(attr5);
    //AttrSet.add(attr6);
    AttrSet.add(attr7);
    dn = "uid=lalazhu," + dn;  //~~~~~~~~~~~~~~added
    LDAPEntry newEntry=new LDAPEntry(dn,AttrSet);
    try{
    lp=new LDAPConnection();
    lp.connect("10.131.10.156",389);
    System.out.println("连接成功!");
    lp.authenticate("cn=root","password");
    System.out.println("验证通过!");//cn=Directory Manager
    System.out.println("插入新记录!");
    lp.add(newEntry);
    System.out.println("成功插入一条记录!");
    }catch(LDAPException e){
    if(e.getLDAPResultCode()==LDAPException.ENTRY_ALREADY_EXISTS)
    System.out.println("对不起,记录已经存在了!");
    else
    System.out.println("连接或插入出错:"+e.toString());
    }
    if((lp!=null)&&(lp.isConnected())){
    try{
    lp.disconnect();
    }catch(LDAPException e){
    System.out.println("断开出错"+e.toString());
    }
    }
    System.exit(status);
    }
    }