Apache DS:使用Java方式对entry进行 *** 作

Apache DS:使用Java方式对entry进行 *** 作,第1张

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 createEnv() {
	Hashtable env = new Hashtable();
	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 env = createEnv();
	// 创建对Dir访问 *** 作的上下文
	DirContext basicCtx = null;
	NamingEnumeration 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)

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5719429.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存