我正在研究一个用例,我必须动态地向Apache DS中的现有对象类添加新属性。
1)以下是一些定义我的对象类的代码: -
Attributes attrs = new BasicAttributes(true);
attrs.put("NUMERICOID", "1.3.6.1.4.1.18060.0.4.3.3.1");
attrs.put("NAME", "ship");
attrs.put("DESC", "An entry which represents a ship");
attrs.put("SUP", "top");
attrs.put("STRUCTURAL", "true");
Attribute must = new BasicAttribute("MUST");
must.add("cn");
attrs.put(must);
Attribute may = new BasicAttribute("MAY");
may.add("numberOfGuns");
may.add("numberOfGuns2");
may.add("description");
attrs.put(may);
//add
schema.createSubcontext("ClassDefinition/ship", attrs);
2)添加该对象类的对象:
Attributes attributes=new BasicAttributes();
Attribute objectClass=new BasicAttribute("objectClass");
objectClass.add("ship");
attributes.put(objectClass);
Attribute g=new BasicAttribute("numberOfGuns");
Attribute g2=new BasicAttribute("numberOfGuns2");
Attribute cn=new BasicAttribute("cn");
g.add("2");
g2.add("3");
cn.add("four");
attributes.put(g);
attributes.put(cn);
attributes.put(g2);
;
ctx.createSubcontext("cn=four,dc=example,dc=com",attributes);
3)添加新属性 - ' mustA'到对象类
Attributes attrs = new BasicAttributes(true);
attrs.put("NUMERICOID", "1.3.6.1.4.1.18060.0.4.3.3.1");
attrs.put("NAME", "ship");
attrs.put("DESC", "An entry which represents a ship");
attrs.put("SUP", "top");
attrs.put("STRUCTURAL", "true");
Attribute must = new BasicAttribute("MUST");
must.add("cn");
must.add("mustA");
attrs.put(must);
Attribute may = new BasicAttribute("MAY");
may.add("numberOfGuns");
may.add("numberOfGuns2");
may.add("description");
attrs.put(may);
//modify
schema.modifyAttributes("ClassDefinition/ship",DirContext.ADD_ATTRIBUTE ,attrs);
一旦添加了新属性(这意味着修改了对象类),如果我添加该对象类类型的新对象,我可以在新创建的对象中看到新添加的属性。
我的问题是,在添加新属性之前创建的对象会发生什么?如何使新属性自动显示在退出对象中?例如,这里将是新属性" mustA"自动显示在对象"四"?
或者我是否必须手动去修改该对象以添加该新属性?
答案 0 :(得分:0)
您需要更新架构。对于ApacheDS,最简单的方法是下载Apache Studio并查看2.3.1 - Adding Schema Elements
哦,你将永远得到The Directory Users List for ApacheDS的大力支持。开发人员非常活跃。
AFIK,ApacheDs将支持从LDAP调用添加模式,但我并不乐观。 (见The Directory Users List for ApacheDS)
如果您坚持这样做,请查看以下示例: http://docs.oracle.com/javase/jndi/tutorial/ldap/schema/object.html
-Jim