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"/>
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