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 );