没多少分了,呵呵,多包涵
环境:windowsxp+openldap-2.2.29-db-4.3.29-openssl-0.9.8a-win32_Setup.exe
代码:
public class LDAPUtil2 {
private String account = "manager" ;
private String passwd = "000000" ;
private String root = "o=sun,c=cn" ;
private DirContext ctx = null ;

public LDAPUtil2(){
init();
add();
}

public void add(){

try {
String newUserName = "user1" ;
Attributes attrs = new BasicAttributes();
Attribute objectClassSet = new BasicAttribute("objectClass");

objectClassSet.add("person") ;
objectClassSet.add("top") ;
objectClassSet.add("organizationalPerson") ;
objectClassSet.add("inetOrgPerson"); 
attrs.put(objectClassSet) ;
attrs.put("sn" ,newUserName ) ;
attrs.put("uid",newUserName) ;
ctx.createSubcontext("cn="+newUserName,attrs ) ;
System.out.println("添加 "+newUserName+" 成功!");
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
close();
}


}


public void init(){
Hashtable<String,String> env = new Hashtable<String,String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory") ;
env.put(Context.PROVIDER_URL,"ldap://127.0.0.1:389") ;
env.put(Context.SECURITY_AUTHENTICATION, "simple") ;
env.put(Context.SECURITY_PRINCIPAL, "cn="+account+","+root) ;
env.put(Context.SECURITY_CREDENTIALS, passwd) ;
try {
//初始化上下文
ctx = new InitialDirContext(env);
System.out.println("认证成功!");
} catch (javax.naming.AuthenticationException e) {
System.out.println("认证失败!");
}catch (Exception e) {
System.out.println("认证失败 : "+e);
}

}
public void close(){
if(ctx != null ){
try {
ctx.close();
System.out.println("连接已关闭。");
} catch (NamingException e) {
System.out.println("NamingException in close():"+e) ;
}
}
}

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
new LDAPUtil2();
}
}认证成功!
javax.naming.OperationNotSupportedException: [LDAP: error code 53 - no global superior knowledge]; remaining name 'cn=user1'
at com.sun.jndi.ldap.LdapCtx.mapErrorCode(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.c_createSubcontext(Unknown Source)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_createSubcontext(Unknown Source)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.createSubcontext(Unknown Source)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.createSubcontext(Unknown Source)
at javax.naming.directory.InitialDirContext.createSubcontext(Unknown Source)
at test.day3.LDAPUtil2.add(LDAPUtil2.java:39)
at test.day3.LDAPUtil2.<init>(LDAPUtil2.java:22)
at test.day3.LDAPUtil2.main(LDAPUtil2.java:86)
连接已关闭。