On Mon, May 23, 2011 at 3:16 PM, Richard Evans <[email protected]> wrote: > 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." > well, you can use the beans for *configuring* the server, not to launch it or perform some load operations automatically.
> 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 > -- Kiran Ayyagari
