OK, I was trying to configure a directory server using configuration beans and the service builder, as recommended in an earlier mail:
"And to achieve a similar configuration like above use the various XXXBean (e.x DirectoryServiceBean) classes present in server-config module. You can configure them in your spring file and then use ServiceBuilder to create the respective service/server instances based on these configuration beans." So I guess this is not possible - I need to write some code to create the schema loader, etc? In 1.5.7 I could configure everything using an XML file. I would like to take this approach so that the configuration can be changed easily by editing the XML rather than recompiling bits of code. Richard -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Kiran Ayyagari Sent: 23 May 2011 10:42 To: Apache Directory Developers List Subject: Re: Embedding ApacheDS using DirectoryServiceBean etc On Mon, May 23, 2011 at 2:27 PM, Richard Evans <[email protected]> wrote: > I'm not sure I get this. It seems as though using DirectoryServiceBean and > ServiceBuilder just can never work because of this NPE. Surely that's a bug? > I do create a schema manager in the XML: > > <bean class="org.apache.directory.server.config.beans.DirectoryServiceBean" > id="dsb"> > ... > </bean> > > <bean id="ds" class="org.apache.directory.server.config.ServiceBuilder" > factory-method="createDirectoryService"> > <constructor-arg ref="dsb"/> > <constructor-arg ref="il"/> > <constructor-arg ref="sm"/> > </bean> > > <bean id="il" class="org.apache.directory.server.core.InstanceLayout"> > ... > </bean> > > <bean id="sm" > class="org.apache.directory.shared.ldap.schemamanager.impl.DefaultSchemaManager"/> > what I mean is that the schema manager created in this way is not useful unless a schema loader is set. the procedure goes like this: SchemaLoader loader = new LdifSchemaLoader( schemaPartitionDirectory ); // <-- you can also use JarLdifSchemaLoader schemaManager = new DefaultSchemaManager( loader ); // We have to load the schema now, otherwise we won't be able // to initialize the Partitions, as we won't be able to parse // and normalize their suffix Dn schemaManager.loadAllEnabled(); HTH > Richard > > -----Original Message----- > From: [email protected] [mailto:[email protected]] On Behalf Of > Kiran Ayyagari > Sent: 22 May 2011 21:02 > To: Apache Directory Developers List > Subject: Re: Embedding ApacheDS using DirectoryServiceBean etc > > On Mon, May 23, 2011 at 1:10 AM, Richard Evans > <[email protected]> wrote: >> I'm experimenting with embedding ApacheDS (1.5.8-SNAPSHOT built from trunk) >> using configuration beans created in Spring XML along with the >> ServiceBuilder. I've attached where I've got to so far - it is not >> complete, but I've run into a couple of problems. >> >> Firstly I get an NPE: >> >> java.lang.NullPointerException >> at >> org.apache.directory.server.core.schema.registries.synchronizers.RegistrySynchronizerAdaptor.<init>(RegistrySynchronizerAdaptor.java:123) >> at >> org.apache.directory.server.core.schema.SchemaPartition.doInit(SchemaPartition.java:224) >> at >> org.apache.directory.server.core.partition.AbstractPartition.initialize(AbstractPartition.java:73) >> at >> org.apache.directory.server.core.DefaultDirectoryService.initialize(DefaultDirectoryService.java:1484) >> at >> org.apache.directory.server.core.DefaultDirectoryService.startup(DefaultDirectoryService.java:962) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >> at >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >> at java.lang.reflect.Method.invoke(Method.java:597) >> at rde.tests.apacheds.LaunchADS.main(LaunchADS.java:49) >> >> It looks as though the SchemaManager instance is never set on the >> SchemaPartition created by DefaultSchemaService. >> > the SchemaManager won't be created by SchemaPartition automatically > rather we need to set it after loading > the schema with any of the available schema loaders. > > Take a look at the methods initSchemaLdifPartition and > initDirectoryService present in ApacheDsService class they might give > you an idea. > >> Secondly, in 1.5.7 the suffix for a partition was a string, now it's a Dn. >> There are lots of constructors for the Dn object - which should be used >> here? >> > you can use the one which takes a single string argument while > configuring, but in general it is good to use the Dn(SchemaManager, > String...) > if you have access to the schema manager. >> Thanks >> >> Richard >> > > > > -- > Kiran Ayyagari > -- Kiran Ayyagari
