Spring Integration
Spring Beans
Ldaptive objects are candidates for configuration via Spring XML context files. The following Spring context XML provides a basic example of wiring up a ConnectionFactory object for use in a Spring application.
Connection Factory Configuration
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="connectionFactory"
class="org.ldaptive.DefaultConnectionFactory">
<property name="connectionConfig">
<bean class="org.ldaptive.ConnectionConfig" p:ldapUrl="ldap://directory.ldaptive.org" p:useStartTLS="true">
<property name="sslConfig">
<bean class="org.ldaptive.ssl.SslConfig">
<property name="credentialConfig">
<bean class="org.ldaptive.ssl.KeyStoreCredentialConfig"
p:keyStore="classpath:/ldaptive.keystore"
p:keyStoreType="BKS"
p:keyStorePassword="changeit"
p:trustStore="classpath:/ldaptive.truststore"
p:trustStoreType="BKS"
p:trustStorePassword="changeit" />
</property>
</bean>
</property>
<property name="connectionInitializers">
<bean class="org.ldaptive.BindConnectionInitializer">
<property name="bindSaslConfig">
<bean class="org.ldaptive.sasl.SaslConfig" p:mechanism="EXTERNAL" />
</property>
</bean>
</property>
</bean>
</property>
</bean>
</beans>
To access your connection factory:
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"/path_to_my/spring-context.xml", });
ConnectionFactory cf = context.getBean("connectionFactory", ConnectionFactory.class);
Connection conn = cf.getConnection();
Pooling Configuration
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="conversionService"
class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="org.ldaptive.beans.spring.convert.StringToDurationConverter"/>
<bean class="org.ldaptive.beans.spring.convert.DurationToStringConverter"/>
</set>
</property>
</bean>
<bean id="pool" class="org.ldaptive.PooledConnectionFactory" init-method="initialize"
p:blockWaitTime="PT5S"
p:minPoolSize="5"
p:maxPoolSize="20"
p:validatePeriodically="true">
<property name="validator">
<bean class="org.ldaptive.SearchConnectionValidator" p:validatePeriod="PT30S" />
</property>
<property name="connectionConfig">
<bean class="org.ldaptive.ConnectionConfig" p:ldapUrl="ldap://directory.ldaptive.org" p:useStartTLS="true">
<property name="sslConfig">
<bean class="org.ldaptive.ssl.SslConfig">
<property name="credentialConfig">
<bean class="org.ldaptive.ssl.KeyStoreCredentialConfig"
p:keyStore="classpath:/ldaptive.keystore"
p:keyStoreType="BKS"
p:keyStorePassword="changeit"
p:trustStore="classpath:/ldaptive.truststore"
p:trustStoreType="BKS"
p:trustStorePassword="changeit" />
</property>
</bean>
</property>
<property name="connectionInitializers">
<bean class="org.ldaptive.BindConnectionInitializer">
<property name="bindSaslConfig">
<bean class="org.ldaptive.sasl.SaslConfig" p:mechanism="EXTERNAL" />
</property>
</bean>
</property>
</bean>
</property>
</bean>
</beans>
To access your pool:
ClassPathXmlApplicationContext poolContext = new ClassPathXmlApplicationContext(new String[] {"/path_to_my/spring-pool-context.xml", });
PooledConnectionFactory pool = poolContext.getBean("pool", PooledConnectionFactory.class);