我的LDAP程序为什么插入记录时会出问题?(程序贴出,解决的答案加100分,我在线等,谢谢!) 我的iplanet删除、修改和查询都没问题,就是新增出问题,先是说classobject违例,我改了一下就变成第一个异常了。会是什么问题呢?拜托大家帮忙想一想啊! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 麻烦您一下,您能发一份netscape的ldap sdk 包给我吗?我单开帖子给分,分数您说!急,谢谢了[email protected] 不好意思,再借宝地一用sdk已经收到了,我去开个帖子,请gemoran来取分也希望楼主的问题迅速得到解决,祝好运 你好,我实验了你的程序,确实出现你说说的问题,但是我对你的程序不是很清楚,呵呵,我是菜鸟了!有如下问题:lp.authenticate("uid=gemoran,ou=People,o=stnc.com.cn,o=stnc.com.cn","xujinglei");这两个参数都是什么呀,这个方法的作用是什么?还有你检查一下,你的记录具体存放位置好像没有确定啊,是在dn中取定的吗?我用php访问ldap增加记录成功过,我相信我们一定会解决的!把你的程序解释一下,我们共同分析一下,ok? 是用来验证权限的,看你有没有增加记录的权限。我输的是在安装时用的UID和PWD。有什么好的建议吗? 你的这句话好像存在问题if(e.getLDAPResultCode()==LDAPException.ENTRY_ALREADY_EXISTS) System.out.println("对不起,记录已经存在了!");你能把查询,更改,和删除的代码贴上吗,我急着要用,多谢了 我的ldap服务器用的是secureway因为显示的是乱码,无法用界面手工加entry,所以只好用安装的uid来测试代码遇到了同样的问题,是不是帐号的问题呀,你试试手工添加一个entry然后用新的entry登陆试试 browser只是一个读取的应用程序吧这种自己写的代码的读写问题如何用它来解决呢?请指点,谢谢 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的。 贴上我编译执行的代码,改过的地方用//~~~~~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); }} 请教生成可执行jar包的问题 寻求QQ登陆框的java源代码 请问tomcat4跟tomcat5运行servlet的问题!! 散分~~~``咨询今后发展和培训推荐~````````` 如何在主函数和其他函数之间传递不定长的数组? 讨论:就一道scjp题目与大家探讨关于“静态内部类”,感谢参与! 输入一个日期如何判断它是星期几 !!!如何安装javaMail! "包“是什么意思?? 在容器管理持久性(Container-Managed Persistence)实体bean配置工具的数据源设置中如何加入动态查询 别人给我一个经过编码的字符串,我要如何知道他是什么编码呀? 有兴趣可以看看
我单开帖子给分,分数您说!
急,谢谢了
[email protected]
sdk已经收到了,我去开个帖子,请gemoran来取分也希望楼主的问题迅速得到解决,祝好运
lp.authenticate("uid=gemoran,ou=People,o=stnc.com.cn,o=stnc.com.cn","xujinglei");
这两个参数都是什么呀,这个方法的作用是什么?
还有你检查一下,你的记录具体存放位置好像没有确定啊,是在dn中取定的吗?
我用php访问ldap增加记录成功过,我相信我们一定会解决的!把你的程序解释一下,我们共同分析一下,ok?
if(e.getLDAPResultCode()==LDAPException.ENTRY_ALREADY_EXISTS)
System.out.println("对不起,记录已经存在了!");
你能把查询,更改,和删除的代码贴上吗,我急着要用,多谢了
因为显示的是乱码,无法用界面手工加entry,所以只好用安装的uid来测试代码
遇到了同样的问题,是不是帐号的问题呀,你试试手工添加一个entry
然后用新的entry登陆试试
这种自己写的代码的读写问题如何用它来解决呢?
请指点,谢谢
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的。
其中第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);
}
}