spring中配置如下:
<bean id="ldapSource" class="org.springframework.ldap.core.support.LdapContextSource">
<property name="url" value="ldap://192.168.35.161:389" />
<property name="base" value="OU=Xen,DC=dns,DC=itm,DC=com" />
<property name="userDn" value="CN=xenadmin,OU=Xen,DC=dns,DC=itm,DC=com" />
<property name="password" value="xenadmin.123" />
<property name="baseEnvironmentProperties"> <!--配置上防止objectGUID和objectSid乱码-->
<map>
<entry key="java.naming.ldap.attributes.binary">
<value>objectGUID objectSid</value>
</entry>
</map>
</property>
</bean>
<bean id="ldapTemplate" class="org.springframework.ldap.core.LdapTemplate">
<constructor-arg ref="ldapSource" />
</bean>
<bean id="ldapSyncService" class="com.bsnnms.bean.ldap.LdapSyncService">
<property name="ldapTemplate">
<ref bean="ldapTemplate" />
</property>
</bean>
java部分:
/**
* ad域服务器上同步员工信息
* @return
*/
@SuppressWarnings({ "unchecked" })
private List<LdapUser> getAllPersons() {
return ldapTemplate.search("", "(&(objectClass=user)(!(objectClass=computer)))", new PersonAttributesMapper());
}
private class PersonAttributesMapper implements AttributesMapper {
private Attributes attrs = null;
public Object mapFromAttributes(Attributes attrs) throws NamingExcep