Chris, Thanks for letting me know that. Here's the code for the class, my server.xml and the various logs generated when I tried to start the server. Again, if I can answer any questions at all, please don't hesistate to ask.
Dan -----Original Message----- From: Chris Custine [mailto:[EMAIL PROTECTED] Sent: Thursday, June 28, 2007 9:25 AM To: [email protected] Subject: Re: Trying to create a new partition configuration class Hi Dan, I forgot to mention that your code got stripped from the email to the list yesterday so I didn't get to look at it. If you send it directly to me I will be glad to look at it and maybe we can get this working. Chris On 6/28/07, Barber, Dan (Contractor) <[EMAIL PROTECTED]> wrote: > > Chris, > > Thanks a lot for the detailed reply. I'd already picked up quite a bit > of this just by going through the code and figuring out where various > things are created, but it's good to know I was mostly on track. > > I actually am not trying to go with very small baby steps at the moment. > What I hope to do is create a JdbcPartitionConfiguration class and a > JdbcPartition class that are exact replicas of existing classes, so that > I've added no new functionality, build them and get a directory working > with those, then I can begin to add our own functionality. > > I made the first of those steps work just fine. I took a copy of > MutableBTreePartitionConfiguration, turned in into > JdbcPartitionConfiguration, built the code within our own package, jar'd > it, put it into the lib directory, changed example.com within server.xml > to use that new package, and started up ApacheDS. Worked like a champ. > > Now, we don't feel like we need the BTree pieces for the partition we'll > be doing, so the next step was to directly extend > PartitionConfiguration, to create a class at the same level of > inheritance as BTreePartitionConfiguration. I essentially merged the > code from MutableBTreePartitionConfiguration and > BTreePartitionConfiguration, as I discovered the various properties that > are required by the Spring implementation. That was the > JdbcPartitionConfiguration that I included with my email yesterday. I > then went through the same process but now the partition doesn't load. > That's when I get the following error in the log: > > [13:53:30] ERROR [org.apache.directory.daemon.Bootstrapper] - Failed on > org.apache.directory.server.Service.init (InstallationLayout, String[]) > org.apache.directory.server.core.interceptor.InterceptorException: > Failed to initialize interceptor chain. [Root exception is > java.lang.NullPointerException] > at > org.apache.directory.server.core.interceptor.InterceptorChain.init (Inter > ceptorChain.java:257) > at > org.apache.directory.server.core.DefaultDirectoryService.initialize(Defa > ultDirectoryService.java:1006) > at > org.apache.directory.server.core.DefaultDirectoryService.startup (Default > DirectoryService.java:254) > at > org.apache.directory.server.core.jndi.AbstractContextFactory.getInitialC > ontext(AbstractContextFactory.java:123) > at javax.naming.spi.NamingManager.getInitialContext (Unknown > Source) > at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source) > at javax.naming.InitialContext.init(Unknown Source) > at javax.naming.InitialContext.<init>(Unknown Source) > at javax.naming.directory.InitialDirContext.<init>(Unknown > Source) > at org.apache.directory.server.Service.init(Service.java:96) > at > org.apache.directory.daemon.Bootstrapper.callInit (Bootstrapper.java:151) > at > org.apache.directory.daemon.ProcrunBootstrapper.prunsrvStart(ProcrunBoot > strapper.java:65) > Caused by: java.lang.NullPointerException > at > org.apache.directory.server.core.partition.impl.btree.ExpressionEnumerat > or.enumConj(ExpressionEnumerator.java:250) > at > org.apache.directory.server.core.partition.impl.btree.ExpressionEnumerat > or.enumerate(ExpressionEnumerator.java:140) > at > org.apache.directory.server.core.partition.impl.btree.DefaultSearchEngin > e.search(DefaultSearchEngine.java:135) > at > org.apache.directory.server.core.partition.impl.btree.BTreePartition.sea > rch(BTreePartition.java:431) > at > org.apache.directory.server.core.partition.DefaultPartitionNexus.search ( > DefaultPartitionNexus.java:922) > at > org.apache.directory.server.core.authz.GroupCache.initialize(GroupCache. > java:146) > at > org.apache.directory.server.core.authz.GroupCache.<init>(GroupCache.java > :117) > at > org.apache.directory.server.core.authz.AuthorizationService.init(Authori > zationService.java:200) > at > org.apache.directory.server.core.interceptor.InterceptorChain.register0( > InterceptorChain.java :419) > at > org.apache.directory.server.core.interceptor.InterceptorChain.register(I > nterceptorChain.java:378) > at > org.apache.directory.server.core.interceptor.InterceptorChain.init(Inter > ceptorChain.java :243) > ... 11 more > > I thought perhaps some of the entries in server.xml were somehow not > compatible with a Partition that doesn't extend > MutableBTreePartitionConfiguration, but that didn't seem to help > anything. I'm somewhat confused, my class should look identical to > MutableBTreePartitionConfiguration other than it doesn't extend > BTreePartitionConfiguration, it directly extends PartitionConfiguration. > There isn't anything in the code currently that expects a > PartitionConfiguration to have BTreePartitionConfiguration in its > inheritance tree is there? > > Perhaps another piece of useful information. The error that I am getting > is the same stack trace that I get if I set "optimizerEnabled" to false > within the default server.xml for example.com. I currently have no idea > whether those two are actually related, or if I just happened across > some bizarre coincidence, but since I found it I thought I'd include > that information. > > If this triggers any additional questions, please ask, I'll be happy to > provide anything I can. > > Thanks, > > Dan > > -----Original Message----- > From: Chris Custine [mailto:[EMAIL PROTECTED] > Sent: Wednesday, June 27, 2007 11:09 PM > To: [email protected] > Subject: Re: Trying to create a new partition configuration class > > If I understand all of this correctly, I think the problem is that > PartitionConfiguration which is the base for > MutableBTreePartitionConfiguration and BTreePartitionConfiguration is > specific to JdbmPartition and instantiates the JdbmPartition. We need > to > make some improvements to make this easier and more intuitive, but in > the > mean time you can do the following things to get you closer to a custom > partition: > > 1). Take the PartitionConfiguration class and create a > JdbcPartitionConfiguration from it. We need to make this more > intuitive, > but this is just a POJO to receive the config properties from the > server.xmlthat are specific to your partition, and this bean creates > the partition > object when Spring initializes. > 2). You will need to implement your own actual partition (ie > JdbcPartition > which extends AbstractPartition) and return a configured instance of it > from > your JdbcPartitionConfiguration.getContextPartition(). > 3). There are a few properties in PartitionConfiguration that look like > they are required, even though we have no interface to enforce. In > particular it looks like getIndexedAttributes() is called by > DefaultDirectoryService, so you may have to keep a stub of it in your > JdbcPartitionConfig. > > There may actually be other uses of methods in PartitionConfiguration > that > are required, but this is an area that needs a little clean up so bear > with > us... > > Hopefully this helps you out a bit. This is not an area that is > completely > intuitive and I have actually never had to do this yet. We are getting > ready to add some new optional partition types so we will undoubtedly be > running into the same issues and fixing them. Please let me know how > this > works out for you and if there are any inaccuracies in what I said. I > will > file a Jira issue about cleaning up the PartitionConfiguration > heirarchy, > etc. so that we get that fixed. > > Thanks, > Chris > > On 6/27/07, Barber, Dan (Contractor) <[EMAIL PROTECTED]> wrote: > > > > This is the initial part of my effort to extend ApacheDS to use a > > different partition. I'm trying to essentially replicate existing > ApacheDS > > classes but as my own classes. Once I've got the service starting > using all > > my own classes then I can begin to modify them for my purposes. > > > > > > > > First, I just made my own version of > MutableBTreePartitionConfiguration, > > changing only the package and class names. Included a jar file with > that new > > class in apache's lib directory, modified server.xml to now create the > > example.com partition using my new partition configuration class, > > everything worked perfectly. > > > > > > > > Next step, I don't think we want a BTree-based implementation, so I > tried > > to extend directly from PartitionConfiguration. In that class I > attempted to > > pretty much duplicate the functionality in both > MutableBTreeConfiguration > > and BTreePartitionConfiguration. I can't seem to get this to work. > > > > > > > > Here's what I'm getting in apacheds's rolling log: > > > > > > > > [13:53:30] ERROR [org.apache.directory.daemon.Bootstrapper] - Failed > on > > org.apache.directory.server.Service.init (InstallationLayout, String[]) > > > > org.apache.directory.server.core.interceptor.InterceptorException: > Failed > > to initialize interceptor chain. [Root exception is > > java.lang.NullPointerException ] > > > > at > > org.apache.directory.server.core.interceptor.InterceptorChain.init( > > InterceptorChain.java:257) > > > > at > > org.apache.directory.server.core.DefaultDirectoryService.initialize ( > > DefaultDirectoryService.java:1006) > > > > at > > org.apache.directory.server.core.DefaultDirectoryService.startup( > > DefaultDirectoryService.java:254) > > > > at > > > org.apache.directory.server.core.jndi.AbstractContextFactory.getInitialC > ontext > > (AbstractContextFactory.java:123) > > > > at > javax.naming.spi.NamingManager.getInitialContext(Unknown > > Source) > > > > at javax.naming.InitialContext.getDefaultInitCtx(Unknown > > Source) > > > > at javax.naming.InitialContext.init(Unknown Source) > > > > at javax.naming.InitialContext.<init>(Unknown Source) > > > > at javax.naming.directory.InitialDirContext.<init>(Unknown > > Source) > > > > at > org.apache.directory.server.Service.init (Service.java:96) > > > > at org.apache.directory.daemon.Bootstrapper.callInit( > > Bootstrapper.java:151) > > > > at > > org.apache.directory.daemon.ProcrunBootstrapper.prunsrvStart ( > > ProcrunBootstrapper.java:65) > > > > Caused by: java.lang.NullPointerException > > > > at > > > org.apache.directory.server.core.partition.impl.btree.ExpressionEnumerat > or.enumConj > > (ExpressionEnumerator.java:250) > > > > at > > > org.apache.directory.server.core.partition.impl.btree.ExpressionEnumerat > or.enumerate > > (ExpressionEnumerator.java:140) > > > > at > > > org.apache.directory.server.core.partition.impl.btree.DefaultSearchEngin > e.search > > (DefaultSearchEngine.java:135) > > > > at > > > org.apache.directory.server.core.partition.impl.btree.BTreePartition.sea > rch > > (BTreePartition.java:431) > > > > at > > > org.apache.directory.server.core.partition.DefaultPartitionNexus.search( > > DefaultPartitionNexus.java:922) > > > > at > > org.apache.directory.server.core.authz.GroupCache.initialize( > > GroupCache.java:146) > > > > at > org.apache.directory.server.core.authz.GroupCache.<init>( > > GroupCache.java :117) > > > > at > > org.apache.directory.server.core.authz.AuthorizationService.init( > > AuthorizationService.java:200) > > > > at > > > org.apache.directory.server.core.interceptor.InterceptorChain.register0 ( > > InterceptorChain.java:419) > > > > at > > > org.apache.directory.server.core.interceptor.InterceptorChain.register( > > InterceptorChain.java:378) > > > > at > > org.apache.directory.server.core.interceptor.InterceptorChain.init( > > InterceptorChain.java:243) > > > > ... 11 more > > > > > > > > I've also attached the server.xml and java code for my new class. Any > > ideas what is going on? > > > > > > > > Thanks, > > > > > > > > Dan > > > > > > > > >
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="environment" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> <property name="properties"> <props> <!-- JNDI security properties used to get initial contexts. --> <prop key="java.naming.security.authentication">simple</prop> <prop key="java.naming.security.principal">uid=admin,ou=system</prop> <prop key="java.naming.security.credentials">secret</prop> <!-- Set this key to a space delimited set of attributeType descriptions and their OID's if you want an attributeType to be handled as binary content. The server will use the schema to derive the set of attributeTypes to treat as binary. The union if the values you provide here will be taken as the set of binaries. Note to be consistent you must add both the OID and all the names an attributeType can have. --> <!-- <prop key="java.naming.ldap.attributes.binary"></prop> --> </props> </property> </bean> <bean id="changePasswordConfiguration" class="org.apache.directory.server.changepw.ChangePasswordConfiguration"> <!-- Whether to enable the Change Password protocol. --> <property name="enabled" value="false" /> <!-- The port to run the Change Password protocol on. --> <property name="ipPort" value="464" /> </bean> <bean id="ntpConfiguration" class="org.apache.directory.server.ntp.NtpConfiguration"> <!-- Whether to enable the NTP protocol. --> <property name="enabled" value="false" /> <!-- The port to run the NTP protocol on. --> <property name="ipPort" value="123" /> </bean> <bean id="dnsConfiguration" class="org.apache.directory.server.dns.DnsConfiguration"> <!-- Whether to enable the DNS protocol. --> <property name="enabled" value="false" /> <!-- The port to run the DNS protocol on. --> <property name="ipPort" value="53" /> </bean> <bean id="kdcConfiguration" class="org.apache.directory.server.kerberos.kdc.KdcConfiguration"> <!-- Whether to enable the Kerberos protocol. --> <property name="enabled" value="false" /> <!-- The port to run the Kerberos protocol on. --> <property name="ipPort" value="88" /> </bean> <bean id="ldapsConfiguration" class="org.apache.directory.server.ldap.LdapConfiguration"> <!-- Whether to enable the LDAPS protocol. --> <property name="enabled" value="false" /> <!-- The port to run the LDAPS protocol on. --> <property name="ipPort" value="636" /> <property name="enableLdaps" value="true" /> </bean> <bean id="ldapConfiguration" class="org.apache.directory.server.ldap.LdapConfiguration"> <!-- The port to run the LDAP protocol on. --> <property name="ipPort" value="10389" /> <!-- Whether to allow anonymous access. --> <property name="allowAnonymousAccess" value="false" /> <!-- The list of supported authentication mechanisms. --> <property name="supportedMechanisms"> <list> <value>SIMPLE</value> <value>CRAM-MD5</value> <value>DIGEST-MD5</value> <!--<value>GSSAPI</value>--> </list> </property> <!-- The FQDN of this SASL host, validated during SASL negotiation. --> <property name="saslHost" value="ldap.example.com" /> <!-- The Kerberos principal name for this LDAP service, used by GSSAPI. --> <property name="saslPrincipal" value="ldap/[EMAIL PROTECTED]" /> <!-- The desired quality-of-protection, used by DIGEST-MD5 and GSSAPI. --> <property name="saslQop"> <list> <value>auth</value> <value>auth-int</value> <value>auth-conf</value> </list> </property> <!-- The realms serviced by this SASL host, used by DIGEST-MD5 and GSSAPI. --> <property name="saslRealms"> <list> <value>example.com</value> <value>apache.org</value> </list> </property> <!-- The base DN containing users that can be SASL authenticated. --> <property name="searchBaseDn" value="ou=users,ou=system" /> <!-- SSL CONFIG CAN GO HERE--> <!-- limits searches by non-admin users to a max time of 15000 --> <!-- milliseconds and has a default value of 10000 --> <property name="maxTimeLimit" value="15000" /> <!-- limits searches to max size of 1000 entries: default value is 100 --> <property name="maxSizeLimit" value="1000" /> <!-- the collection of extended operation handlers to install --> <property name="extendedOperationHandlers"> <list> <!--<bean class="org.apache.directory.server.ldap.support.starttls.StartTlsHandler"/>--> <bean class="org.apache.directory.server.ldap.support.extended.GracefulShutdownHandler"/> <bean class="org.apache.directory.server.ldap.support.extended.LaunchDiagnosticUiHandler"/> <!-- The Stored Procedure Extended Operation is not stable yet and it may cause security risks. <bean class="org.apache.directory.server.ldap.support.extended.StoredProcedureExtendedOperationHandler"/> --> </list> </property> </bean> <bean id="configuration" class="org.apache.directory.server.configuration.MutableServerStartupConfiguration"> <property name="workingDirectory" value="example.com" /> <!-- Uncomment below to have the server load entries on startup! --> <!-- ldifDirectory property can point to a relative file, directory or --> <!-- can point to an absolute path to either using the URL path --> <!-- notation: i.e. file:///Users/jack/apacheds/ldifs --> <property name="ldifDirectory"> <value>c:/Program Files/apacheds-1.5.1-SNAPSHOT/conf/polycom</value> </property> <!-- Entries will optionally be filtered using LdifLoadFilters in the --> <!-- order specified. --> <!-- <property name="ldifFilters"> <list> <bean class="com.example.MyEntryFilter"/> </list> </property> --> <!-- the number of milliseconds before issuing a synch (flush to disk) --> <!-- which writes out dirty pages back to disk. To turn off synchs all --> <!-- together simply set this value to <= 0. Make sure you turn on --> <!-- synchOnWrite for all partitions if you do choose to do this or else--> <!-- writes may never persist to disk. --> <property name="synchPeriodMillis" value="15000" /> <!-- maximum number of threads used by mina is set to 8: default is 4 --> <property name="maxThreads" value="8" /> <property name="allowAnonymousAccess" value="false" /> <property name="accessControlEnabled" value="false" /> <!-- It's more efficient to keep this feature turned off but you may not like having the creatorsName and modifiersName contain OIDs instead of short attributeType names instead. So if you want the creatorsName to change from the normalized form which is the internal representation of '0.9.2342.19200300.100.1.1=admin,2.5.4.11=system' to a more human readabile form like: 'uid=admin,ou=system' then set this property to true. --> <property name="denormalizeOpAttrsEnabled" value="false" /> <property name="ntpConfiguration" ref="ntpConfiguration" /> <property name="dnsConfiguration" ref="dnsConfiguration" /> <property name="changePasswordConfiguration" ref="changePasswordConfiguration" /> <property name="kdcConfiguration" ref="kdcConfiguration" /> <property name="ldapConfiguration" ref="ldapConfiguration" /> <property name="ldapsConfiguration" ref="ldapsConfiguration" /> <property name="systemPartitionConfiguration" ref="systemPartitionConfiguration" /> <property name="partitionConfigurations"> <set> <ref bean="examplePartitionConfiguration"/> </set> </property> <property name="interceptorConfigurations"> <list> <bean class="org.apache.directory.server.core.configuration.MutableInterceptorConfiguration"> <property name="name" value="normalizationService" /> <property name="interceptor"> <bean class="org.apache.directory.server.core.normalization.NormalizationService" /> </property> </bean> <bean class="org.apache.directory.server.core.configuration.MutableInterceptorConfiguration"> <property name="name" value="authenticationService" /> <property name="interceptor"> <bean class="org.apache.directory.server.core.authn.AuthenticationService" /> </property> </bean> <bean class="org.apache.directory.server.core.configuration.MutableInterceptorConfiguration"> <property name="name" value="referralService" /> <property name="interceptor"> <bean class="org.apache.directory.server.core.referral.ReferralService" /> </property> </bean> <bean class="org.apache.directory.server.core.configuration.MutableInterceptorConfiguration"> <property name="name" value="authorizationService" /> <property name="interceptor"> <bean class="org.apache.directory.server.core.authz.AuthorizationService" /> </property> </bean> <bean class="org.apache.directory.server.core.configuration.MutableInterceptorConfiguration"> <property name="name" value="defaultAuthorizationService" /> <property name="interceptor"> <bean class="org.apache.directory.server.core.authz.DefaultAuthorizationService" /> </property> </bean> <bean class="org.apache.directory.server.core.configuration.MutableInterceptorConfiguration"> <property name="name" value="exceptionService" /> <property name="interceptor"> <bean class="org.apache.directory.server.core.exception.ExceptionService" /> </property> </bean> <bean class="org.apache.directory.server.core.configuration.MutableInterceptorConfiguration"> <property name="name" value="operationalAttributeService" /> <property name="interceptor"> <bean class="org.apache.directory.server.core.operational.OperationalAttributeService" /> </property> </bean> <!-- bean class="org.apache.directory.server.core.configuration.MutableInterceptorConfiguration"> <property name="name" value="passwordPolicyService" /> <property name="interceptor"> <bean class="org.apache.directory.server.core.kerberos.PasswordPolicyService" /> </property> </bean> <bean class="org.apache.directory.server.core.configuration.MutableInterceptorConfiguration"> <property name="name" value="keyDerivationService" /> <property name="interceptor"> <bean class="org.apache.directory.server.core.kerberos.KeyDerivationService" /> </property> </bean --> <bean class="org.apache.directory.server.core.configuration.MutableInterceptorConfiguration"> <property name="name" value="schemaService" /> <property name="interceptor"> <bean class="org.apache.directory.server.core.schema.SchemaService" /> </property> </bean> <bean class="org.apache.directory.server.core.configuration.MutableInterceptorConfiguration"> <property name="name" value="subentryService" /> <property name="interceptor"> <bean class="org.apache.directory.server.core.subtree.SubentryService" /> </property> </bean> <bean class="org.apache.directory.server.core.configuration.MutableInterceptorConfiguration"> <property name="name" value="collectiveAttributeService" /> <property name="interceptor"> <bean class="org.apache.directory.server.core.collective.CollectiveAttributeService" /> </property> </bean> <bean class="org.apache.directory.server.core.configuration.MutableInterceptorConfiguration"> <property name="name" value="eventService" /> <property name="interceptor"> <bean class="org.apache.directory.server.core.event.EventService" /> </property> </bean> <bean class="org.apache.directory.server.core.configuration.MutableInterceptorConfiguration"> <property name="name" value="triggerService" /> <property name="interceptor"> <bean class="org.apache.directory.server.core.trigger.TriggerService" /> </property> </bean> <!-- Uncomment to enable replication service <bean class="org.apache.directory.server.core.configuration.MutableInterceptorConfiguration"> <property name="name" value="replicationService" /> <property name="interceptor"> <bean class="org.apache.directory.mitosis.service.ReplicationService"> <property name="configuration"> <bean class="org.apache.directory.mitosis.configuration.ReplicationConfiguration"> <property name="replicaId"> <bean class="org.apache.directory.mitosis.common.ReplicaId"> <constructor-arg> <value>instance_a</value> </constructor-arg> </bean> </property> <property name="serverPort" value="10390" /> <property name="peerReplicas" value="[EMAIL PROTECTED]:10392" /> </bean> </property> </bean> </property> </bean> --> </list> </property> </bean> <!-- use the following partitionConfiguration to override defaults for --> <!-- the system partition --> <bean id="systemPartitionConfiguration" class="org.apache.directory.server.core.partition.impl.btree.MutableBTreePartitionConfiguration"> <property name="name" value="system" /> <property name="cacheSize" value="100" /> <property name="suffix" value="ou=system" /> <!-- the optimizer is enabled by default but may not always be what --> <!-- you want if your queries are really simple --> <property name="optimizerEnabled" value="true" /> <!-- Synchronization on writes does not wait for synch operations to flush dirty pages. Writes persist immediately to disk at a cost to performance with increased data integrity. Otherwise the periodic synch operation will flush dirty pages using the synchPeriodMillis parameter in the main configuration. --> <property name="synchOnWrite" value="true" /> <property name="indexedAttributes"> <set> <bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"> <property name="attributeId" value="1.3.6.1.4.1.18060.0.4.1.2.1" /> <property name="cacheSize" value="100" /> </bean> <bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"> <property name="attributeId" value="1.3.6.1.4.1.18060.0.4.1.2.2" /> <property name="cacheSize" value="100" /> </bean> <bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"> <property name="attributeId" value="1.3.6.1.4.1.18060.0.4.1.2.3" /> <property name="cacheSize" value="100" /> </bean> <bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"> <property name="attributeId" value="1.3.6.1.4.1.18060.0.4.1.2.4" /> <property name="cacheSize" value="100" /> </bean> <bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"> <property name="attributeId" value="1.3.6.1.4.1.18060.0.4.1.2.5" /> <property name="cacheSize" value="10" /> </bean> <bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"> <property name="attributeId" value="1.3.6.1.4.1.18060.0.4.1.2.6" /> <property name="cacheSize" value="10" /> </bean> <bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"> <property name="attributeId" value="1.3.6.1.4.1.18060.0.4.1.2.7" /> <property name="cacheSize" value="10" /> </bean> <bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"> <property name="attributeId" value="ou" /> <property name="cacheSize" value="100" /> </bean> <bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"> <property name="attributeId" value="uid" /> <property name="cacheSize" value="100" /> </bean> <bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"> <property name="attributeId" value="objectClass" /> <property name="cacheSize" value="100" /> </bean> </set> </property> <property name="contextEntry"> <value> objectClass: top objectClass: organizationalUnit objectClass: extensibleObject ou: system </value> </property> </bean> <!-- <bean id="examplePartitionConfiguration" class="org.apache.directory.server.core.partition.impl.btree.MutableBTreePartitionConfiguration"> --> <bean id="examplePartitionConfiguration" class="com.polycom.directory.server.core.partition.impl.jdbc.JdbcPartitionConfiguration"> <property name="name" value="example" /> <property name="cacheSize" value="100" /> <property name="suffix" value="dc=example,dc=com" /> <!-- the optimizer is enabled by default but may not always be what --> <!-- you want if your queries are really simple --> <property name="optimizerEnabled" value="true" /> <!-- Synchronization on writes does not wait for synch operations to flush dirty pages. Writes persist immediately to disk at a cost to performance with increased data integrity. Otherwise the periodic synch operation will flush dirty pages using the synchPeriodMillis parameter in the main configuration. --> <property name="synchOnWrite" value="true" /> <property name="indexedAttributes"> <set> <bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"> <property name="attributeId" value="1.3.6.1.4.1.18060.0.4.1.2.1" /> <property name="cacheSize" value="100" /> </bean> <bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"> <property name="attributeId" value="1.3.6.1.4.1.18060.0.4.1.2.2" /> <property name="cacheSize" value="100" /> </bean> <bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"> <property name="attributeId" value="1.3.6.1.4.1.18060.0.4.1.2.3" /> <property name="cacheSize" value="100" /> </bean> <bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"> <property name="attributeId" value="1.3.6.1.4.1.18060.0.4.1.2.4" /> <property name="cacheSize" value="100" /> </bean> <bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"> <property name="attributeId" value="1.3.6.1.4.1.18060.0.4.1.2.5" /> <property name="cacheSize" value="10" /> </bean> <bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"> <property name="attributeId" value="1.3.6.1.4.1.18060.0.4.1.2.6" /> <property name="cacheSize" value="10" /> </bean> <bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"> <property name="attributeId" value="1.3.6.1.4.1.18060.0.4.1.2.7" /> <property name="cacheSize" value="10" /> </bean> <bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"> <property name="attributeId" value="dc" /> <property name="cacheSize" value="100" /> </bean> <bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"> <property name="attributeId" value="ou" /> <property name="cacheSize" value="100" /> </bean> <bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"> <property name="attributeId" value="krb5PrincipalName" /> <property name="cacheSize" value="100" /> </bean> <bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"> <property name="attributeId" value="uid" /> <property name="cacheSize" value="100" /> </bean> <bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"> <property name="attributeId" value="objectClass" /> <property name="cacheSize" value="100" /> </bean> </set> </property> <property name="contextEntry"> <value> objectClass: top objectClass: domain objectClass: extensibleObject dc: example </value> </property> </bean> <bean class="org.springframework.beans.factory.config.CustomEditorConfigurer"> <property name="customEditors"> <map> <entry key="javax.naming.directory.Attributes"> <bean class="org.apache.directory.server.core.configuration.AttributesPropertyEditor"/> </entry> </map> </property> </bean> </beans>
