On Wed, Feb 12, 2014 at 9:21 PM, Louie, Kenneth W
<[email protected]>wrote:
> I'm trying to create a new partition on a remote ApacheDS server. I can do
> it through the Studio, but I would
what you are adding through studio is a context(a.k.a root) entry of the
partition (like dc=example,dc=com)
> like to automate this process. Is it possible to do this programmatically?
> The examples I see are for an embedded server.
>
> you can add('configure', strictly speaking) a partition over network but
the server must be restarted
to make it usable.
Thanks
>
> From: <Louie>, "Louie, Kenneth W" <[email protected]<mailto:
> [email protected]>>
> Date: Tuesday, February 11, 2014 1:53 PM
> To: "[email protected]<mailto:[email protected]>" <
> [email protected]<mailto:[email protected]>>, "
> [email protected]<mailto:[email protected]>" <
> [email protected]<mailto:[email protected]>>
> Subject: Trying to create a partition programmatically - need help
>
> I'm trying to create a partition programatically. I've tried following the
> example on the ApacheDS website (
> https://directory.apache.org/apacheds/basic-ug/1.4.3-adding-partition.html#adding-a-partition-programmatically)
> , but this example is definitely not correct.
>
> Here is my code:
>
> try {
> LdapConnection connection = new LdapNetworkConnection(host, port);
> connection.bind(admin, password);
>
> log.info("Loading Schema...");
> connection.loadSchema();
> SchemaManager schemaManager = connection.getSchemaManager();
> Dn suffixDn = new Dn(schemaManager, "dc=newParition,dc=com");
>
> log.info("Start to create partition...");
> JdbmPartition newPartition = new JdbmPartition(schemaManager);
> newPartition.setId("newParition");
> newPartition.setSuffixDn(suffixDn);
> newPartition.setCacheSize(1000);
> newPartition.setPartitionPath(new
> URI("file:///var/lib/apacheds-2.0.0-M15/default/partitions/newParition"));
>
> newPartition.addIndex(new JdbmIndex("objectClass", false));
> newPartition.addIndex(new JdbmIndex("dc", false));
>
> Entry contextEntry = new DefaultEntry(schemaManager, suffixDn);
> contextEntry.put("objectClass", "domain", "top");
> contextEntry.put("dc", "newParition");
>
> log.info("Initializing Parition");
> newPartition.initialize();
> log.info("Adding Entry to Partition");
> newPartition.add(new AddOperationContext(null, contextEntry));
> } catch (URISyntaxException ex) {
> log.error("Error with partition location: " + ex);
> } catch (Exception ex) {
> log.error("Error creating partition: " + ex);
> }
>
> When I run this, I'm seeing:
>
> Error creating partition:
> org.apache.directory.api.ldap.model.exception.LdapSchemaViolationException:
> ERR_219 Entry dc=newParition,dc=com contains no entryCsn attribute: Entry ...
>
> It doesn't even look like the partition is being added to my server (when
> I restart my apacheds server, I don't see any new namingContexts under the
> Root DSE). I think I'm missing some steps here, but not sure what they are.
> Can anyone help me? I'd greatly appreciate it.
>
> Thanks
>
>
--
Kiran Ayyagari
http://keydap.com