Java LDAP中超时的实现
我一直在处理一个应用程序,其中我们使用LDAP获取用户详细信息。有时获取用户详细信息需要更多的时间。我想在获取详细信息的方法上实现超时,这样我们就可以避免在最坏的情况下挂起服务器上的事务 这里我们使用的是Java LDAP中超时的实现,java,spring,ldap,spring-ldap,ldapconnection,Java,Spring,Ldap,Spring Ldap,Ldapconnection,我一直在处理一个应用程序,其中我们使用LDAP获取用户详细信息。有时获取用户详细信息需要更多的时间。我想在获取详细信息的方法上实现超时,这样我们就可以避免在最坏的情况下挂起服务器上的事务 这里我们使用的是LdapUtil类,我们在其中配置了LdapTemplate类来获取所需的详细信息 我们如何在LDAP方法上实现超时? (在本例中,ldapTemplate.search(…)methods) 公共类LdapUtil{ @自动连线(必需=真) @限定符(value=“ldapTemplateAp
LdapUtil
类,我们在其中配置了LdapTemplate
类来获取所需的详细信息
我们如何在LDAP方法上实现超时?
(在本例中,ldapTemplate.search(…)
methods)
公共类LdapUtil{
@自动连线(必需=真)
@限定符(value=“ldapTemplateApp”)
LdapTemplate-LdapTemplate;
公共集合findProducts(字符串用户ID){
最终集products=newHashSet();
//查找用户
String usrFilter=String.format(USERID\u FILTER,globalUserId);
search(“ou=Members”,usrFilter,//注意这一行
新名称ClassPairCallBackHandler(){
public void handleNameClassPair(NameClassPair NameClassPair){
SearchResult=(SearchResult)nameClassPair;
字符串user=result.getNameInNamespace();
String GrpFilter=String.format(组过滤器,用户);
ListzonePrefixes=ldapTemplate.search(“Zones”,GrpFilter,//注意这一行
新属性映射(){
公共对象mapFromAttributes(属性属性)引发NamingException{
返回substringBeforeLast((字符串)attributes.get(“cn”).get(),“-”+“-”;
}
});
}
});
产品。删除(空);
返回newHashSet(产品);
}
}
我们有一个LDAP.xml,其中配置了ldaptemplate
<beans xmlns="------">
<!-- LDAP -->
<bean id="contextSourceApp" class="org.springframework.ldap.pool.factory.PoolingContextSource">
<property name="contextSource" ref="contextSourceTargetApp" />
<property name="dirContextValidator">
<bean id="dirContextValidator"
class="org.springframework.ldap.pool.validation.DefaultDirContextValidator"/>
</property>
<property name="testOnBorrow" value="true" />
</bean>
<bean id="contextSourceTargetApp" class="org.springframework.ldap.core.support.LdapContextSource">
<property name="url" value="${ldap.url}" />
<property name="base" value="${ldap.base.}" />
<property name="userDn" value="${ldap.user}" />
<property name="password" value="${ldap.password}" />
<property name="pooled" value="false" />
</bean>
<bean id="ldapTemplateApp" class="org.springframework.ldap.core.LdapTemplate">
<constructor-arg ref="contextSourceApp" />
</bean>
我有几点疑问:
<bean id="contextSourceTargetApp"
class="org.springframework.ldap.core.support.LdapContextSource">
<property name="baseEnvironmentProperties">
<map>
<entry key="com.sun.jndi.ldap.connect.timeout" value="5000" />
</map>
</property>
</bean>
如果您对LDAP超时实现有任何想法,请发布任何其他解决方案。对于
ActiveDirectoryLdapAuthenticationProvider
使用LDAP.xml文件的解决方案对我不起作用。相反,我在类路径中添加了一个jndi.properties
文件,其中包含以下内容:
com.sun.jndi.ldap.connect.timeout=500
com.sun.jndi.ldap.connect.timeout=500