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"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
<bean id="connectionFactory"
class="org.ldaptive.DefaultConnectionFactory"
p:connectionConfig-ref="connectionConfig"
/>
<bean id="connectionConfig"
class="org.ldaptive.ConnectionConfig"
p:ldapUrl="ldap://directory.ldaptive.org"
p:bindSaslConfig-ref="saslConfig"
p:useStartTLS="true"
p:sslConfig-ref="sslConfig"
/>
<bean id="saslConfig"
class="org.ldaptive.sasl.ExternalConfig"
/>
<bean id="sslConfig"
class="org.ldaptive.ssl.SslConfig"
p:credentialConfig-ref="credentialConfig"
/>
<bean id="credentialConfig"
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"
/>
</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"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.1.xsd">
<bean id="pool"
class="org.ldaptive.pool.BlockingConnectionPool"
init-method="initialize"
p:blockWaitTime="5000">
<constructor-arg index="0">
<bean class="org.ldaptive.pool.PoolConfig"
p:minPoolSize="5"
p:maxPoolSize="20"
p:validatePeriodically="true"
p:validatePeriod="30"
/>
</constructor-arg>
<constructor-arg index="1" ref="connectionFactory"/>
</bean>
<bean id="connectionFactory"
class="org.ldaptive.DefaultConnectionFactory"
p:connectionConfig-ref="connectionConfig"
/>
<bean id="connectionConfig"
class="org.ldaptive.ConnectionConfig"
p:ldapUrl="ldap://directory.ldaptive.org"
p:bindSaslConfig-ref="saslConfig"
p:useStartTLS="true"
p:sslConfig-ref="sslConfig"
/>
<bean id="saslConfig"
class="org.ldaptive.sasl.ExternalConfig"
/>
<bean id="sslConfig"
class="org.ldaptive.ssl.SslConfig"
p:credentialConfig-ref="credentialConfig"
/>
<bean id="credentialConfig"
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"
/>
</beans>
To access your pool:
ClassPathXmlApplicationContext poolContext = new ClassPathXmlApplicationContext(new String[] {"/path_to_my/spring-pool-context.xml", });
BlockingConnectionPool pool = poolContext.getBean("pool", BlockingConnectionFactory.class);
Connection conn = pool.getConnection();
Spring Extensible XML
Ldaptive provides a schema extension that can simplify configuration.
Connection Factory
<?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:ldaptive="http://www.ldaptive.org/schema/spring-ext"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.ldaptive.org/schema/spring-ext http://www.ldaptive.org/schema/spring-ext-1.2.4.xsd">
<context:property-placeholder location="classpath:/spring-ext.properties"/>
<ldaptive:connection-factory
ldapUrl="ldap://directory.ldaptive.org"
bindDn="cn=manager,ou=people,dc=ldaptive,dc=org"
bindCredential="not-a-real-password"
useStartTLS="true"
trustCertificates="file:/path/to/ldaptive.trust.crt"
/>
</beans>
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"/path_to_my/spring-ext-context.xml", });
DefaultConnectionFactory connectionFactory = context.getBean("connection-factory", DefaultConnectionFactory.class);
Pooled Connection Factory
<?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:ldaptive="http://www.ldaptive.org/schema/spring-ext"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.ldaptive.org/schema/spring-ext http://www.ldaptive.org/schema/spring-ext-1.2.4.xsd">
<context:property-placeholder location="classpath:/spring-ext.properties"/>
<ldaptive:pooled-connection-factory
ldapUrl="ldap://directory.ldaptive.org"
bindDn="cn=manager,ou=people,dc=ldaptive,dc=org"
bindCredential="not-a-real-password"
useStartTLS="true"
trustCertificates="file:/path/to/ldaptive.trust.crt"
minPoolSize="5"
maxPoolSize="10"
/>
</beans>
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"/path_to_my/spring-ext-context.xml", });
PooledConnectionFactory pooledConnectionFactory = context.getBean("pooled-connection-factory", PooledConnectionFactory.class);
Search Executor
<?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:ldaptive="http://www.ldaptive.org/schema/spring-ext"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.ldaptive.org/schema/spring-ext http://www.ldaptive.org/schema/spring-ext-1.2.4.xsd">
<context:property-placeholder location="classpath:/spring-ext.properties"/>
<ldaptive:search-executor
baseDn="ou=people,dc=ldaptive,dc=org"
searchFilter="(mail=*)"
returnAttributes="cn,givenName,sn"
timeLimit="PT5S"
sizeLimit="100"
binaryAttributes="jpegPhoto,userCertificate"
sortBehavior="ORDERED"
/>
</beans>
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"/path_to_my/spring-ext-context.xml", });
SearchExecutor executor = context.getBean("search-executor", SearchExecutor.class);
Authenticator
<?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:ldaptive="http://www.ldaptive.org/schema/spring-ext"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.ldaptive.org/schema/spring-ext http://www.ldaptive.org/schema/spring-ext-1.2.4.xsd">
<context:property-placeholder location="classpath:/spring-ext.properties"/>
<ldaptive:bind-search-authenticator
id="bind-search-disable-pool"
ldapUrl="ldap://directory.ldaptive.org"
trustStore="classpath:/ldaptive.truststore"
trustStorePassword="changeit"
baseDn="ou=people,dc=ldaptive,dc=org"
userFilter="(mail={user})"
bindDn="cn=manager,ou=people,dc=ldaptive,dc=org"
bindCredential="file:/path/to/credential"
connectTimeout="PT2S"
useStartTLS="true">
<ldaptive:authentication-response-handler>
<ldaptive:password-policy-handler/>
</ldaptive:authentication-response-handler>
</ldaptive:bind-search-authenticator>
</beans>
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"/path_to_my/spring-ext-context.xml", });
Authenticator bindSearchAuthenticator = context.getBean("bind-search-authenticator", Authenticator.class);