On Mon, May 23, 2011 at 3:57 PM, Richard Evans <[email protected]> wrote: > OK, I'll have to rethink. It's a bit disappointing since we've used XML > configuration for each of the other applications we embed - ActiveMQ, Apache > FTP server and Apache SSHD. > how about creating a new class which includes just the schema loading part and configure it in the XML? > Richard > > -----Original Message----- > From: [email protected] [mailto:[email protected]] On Behalf Of > Kiran Ayyagari > Sent: 23 May 2011 10:53 > To: Apache Directory Developers List > Subject: Re: Embedding ApacheDS using DirectoryServiceBean etc > > 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 >
-- Kiran Ayyagari
