Apache DS:使用Java方式对entry进行操作
Posted 你是小KS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache DS:使用Java方式对entry进行操作相关的知识,希望对你有一定的参考价值。
当前版本: apacheds-2.0.0.AM26
1. 声明
当前内容主要为j记录使用Java方式操作Apache DS
当前操作:
- 创建entry、为entry绑定对象、重新绑定、删除绑定
- 删除entry
注意:如果entry绑定了对象或者属性,那么删除会报错的!!
2. 启动Apache DS
./bin/apacheds.sh start
并开放10389
端口,apache ds默认启动在10389
apache ds默认会在第一次启动的时候使用实例default,并完成partition操作,此后不再加载ldif文件
3. 基本操作demo
private static final String HOST = "192.168.1.100";
private static Hashtable<String, String> createEnv()
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://" + HOST + ":10389");
env.put(Context.SECURITY_PRINCIPAL, "uid=admin,ou=system");
env.put(Context.SECURITY_CREDENTIALS, "secret");
return env;
private static void printSamplePartition()
Hashtable<String, String> env = createEnv();
// 创建对Dir访问操作的上下文
DirContext basicCtx = null;
NamingEnumeration<Binding> listBindings = null;
try
basicCtx = new InitialDirContext(env);
// 通过lookup方式切换当前的位置为特定的文件夹位置(相当于cd操作切换到该目录下面)
DirContext examplePartition = (DirContext) basicCtx.lookup("dc=example,dc=com");
listBindings = examplePartition.listBindings("");
listBindginEnumeration(listBindings);
// 1. 创建实体
System.out.println("创建实体Fruits");
LdapName ldapName = new LdapName("cn=Fruits");
examplePartition.createSubcontext(ldapName);
listBindings = examplePartition.listBindings("");
listBindginEnumeration(listBindings);
// 2. 为实体绑定对象
DirContext fruitsContext = (DirContext) basicCtx.lookup("cn=Fruits,dc=example,dc=com");
System.out.println("为实体Fruits绑定对象");
// 绑定的必须是存在的
fruitsContext.bind("cn=Fruits", new Fruit("orange"));
listBindings = fruitsContext.listBindings("");
listBindginEnumeration(listBindings);
// 3. 为实体重新绑定对象
System.out.println("为实体Fruits重新绑定对象");
fruitsContext.rebind("cn=Fruits", new Fruit("apple"));
listBindings = fruitsContext.listBindings("");
listBindginEnumeration(listBindings);
// 4. 解除对象绑定
System.out.println("为实体Fruits解除绑定对象");
fruitsContext.unbind("cn=Fruits");
listBindings = fruitsContext.listBindings("");
listBindginEnumeration(listBindings);
// 5. 删除这个实体
System.out.println("删除实体Fruits");
examplePartition.destroySubcontext("cn=Fruits");
listBindings = examplePartition.listBindings("");
listBindginEnumeration(listBindings);
catch (Exception e)
e.printStackTrace();
finally
close(basicCtx);
执行结果:
4. 总结
1. lookup默认执行后返回的东西就是相当于cd文件的结果
目录,所以使用的时候需要小心,list("")默认就是查看当前路径下的东西
2. 删除一个entry必须首先解除绑定、删除属性之后才可以执行删除实体的操作
3.apache ds启动的时候默认提供了一个example的partition(dc=example,dc=com
)
以上是关于Apache DS:使用Java方式对entry进行操作的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot之data操作Apache DS完成对用户操作