Setting Up
Mitosis is implemented as an Interceptor of Apache Directory Server. Therefore, you can simply insert Mitosis into your InterceptorChain:
// Get InterceptorChain configuration. MutableStartupConfiguration startupCfg = new MutableStartupConfiguration(); List chainCfg = startupCfg.getInterceptorConfigurations(); // Create the configuration for ReplicationService ReplicationConfiguration replicationCfg = new ReplicationConfiguration(); //// ReplicatId must be unique. replicationCfg.setReplicaId( new ReplicaId( "instance_a" ) ); //// ServerPort is 7846 by default. replicationCfg.setServerPort( 7846 ); //// Add only one replica here because Mitosis supports only dual-master replication for now. replicationCfg.addPeerReplica( new Replica( "instance_b@peerhost.com:7846" ) ); // Create a new ReplicationService and configure it. ReplicationService service = new ReplicationService(); service.setConfiguration( replicationCfg ); // Create an InterceptorConfiguration for ReplicationService MutableInterceptorConfiguration interceptorCfg = new MutableInterceptorConfiguration(); interceptorCfg.setName( "replicationService" ); interceptorCfg.setInterceptor( service ); // Add the InterceptorConfiguration to chainCfg chainCfg.add( interceptorCfg ); // Finish configuration by updating interceptor settings startupCfg.setInterceptorConfigurations( chainCfg );
- Make sure that ReplicationService is always at the end of the chain.
- ReplicaId must not change.
- You also have to configure the peer replica in the same manner.
Alternatively, you can use your spring beans XML file to initialize the InterceptorChain:
... <bean id="configuration" class="org.apache.ldap.server.configuration.MutableServerStartupConfiguration"> <!-- Put other properties here --> ... <!-- InterceptorChain settings --> <property name="interceptorConfigurations"> <list> <!-- Begin of default interceptor settings --> <bean class="org.apache.ldap.server.configuration.MutableInterceptorConfiguration"> <property name="name"><value>normalizationService</value></property> <property name="interceptor"> <bean class="org.apache.ldap.server.normalization.NormalizationService" /> </property> </bean> <bean class="org.apache.ldap.server.configuration.MutableInterceptorConfiguration"> <property name="name"><value>authenticationService</value></property> <property name="interceptor"> <bean class="org.apache.ldap.server.authn.AuthenticationService" /> </property> </bean> <bean class="org.apache.ldap.server.configuration.MutableInterceptorConfiguration"> <property name="name"><value>authorizationService</value></property> <property name="interceptor"> <bean class="org.apache.ldap.server.authz.AuthorizationService" /> </property> </bean> <bean class="org.apache.ldap.server.configuration.MutableInterceptorConfiguration"> <property name="name"><value>exceptionService</value></property> <property name="interceptor"> <bean class="org.apache.ldap.server.exception.ExceptionService" /> </property> </bean> <bean class="org.apache.ldap.server.configuration.MutableInterceptorConfiguration"> <property name="name"><value>schemaService</value></property> <property name="interceptor"> <bean class="org.apache.ldap.server.schema.SchemaService" /> </property> </bean> <bean class="org.apache.ldap.server.configuration.MutableInterceptorConfiguration"> <property name="name"><value>operationalAttributeService</value></property> <property name="interceptor"> <bean class="org.apache.ldap.server.operational.OperationalAttributeService" /> </property> </bean> <!-- End of default interceptor settings --> <!-- ReplicateionService --> <bean class="org.apache.ldap.server.configuration.MutableInterceptorConfiguration"> <property name="name"><value>replicationService</value></property> <property name="interceptor"> <bean class="org.safehaus.mitosis.service.ReplicationService"> <property name="configuration"> <bean class="org.safehaus.mitosis.configuration.ReplicationConfiguration"> <property name="replicaId"><value>instance_a</value></property> <property name="serverPort"><value>7846</value></property> <property name="peerReplicas"><value>instance_b@peerhost.com:7846</value></property> </bean> </property> </bean> </property> </bean> </list> </property> </bean> ...
Known issues
Please take a look at Road Map to broswe known issues.
