LDAPを使用してユーザーの詳細を取得するアプリケーションを扱っています。ユーザーの詳細を取得するのに時間がかかる場合があります。最悪の場合にサーバーでトランザクションがハングしないように、詳細を取得するメソッドにタイムアウトを実装したいと考えています。
ここでは、必要な詳細を取得するようにクラスをLdapUtil
構成したクラスを使用しています。LdapTemplate
LDAP メソッドにタイムアウトを実装するにはどうすればよいですか?
(この場合はldapTemplate.search(...)
メソッド)
public class LdapUtil {
@Autowired(required = true)
@Qualifier(value = "ldapTemplateApp")
LdapTemplate ldapTemplate;
public Set < ProductGroup > findProducts(String UserId) {
final Set < ProductGroup > products = newHashSet();
// Lookup the user
String usrFilter = String.format(USERID_FILTER, globalUserId);
ldapTemplate.search("ou=Members", usrFilter, // note this line
new NameClassPairCallbackHandler() {
public void handleNameClassPair(NameClassPair nameClassPair) {
SearchResult result = (SearchResult) nameClassPair;
String user = result.getNameInNamespace();
String GrpFilter = String.format(GROUP_FILTER, user);
List < String > zonePrefixes = ldapTemplate.search("Zones", GrpFilter, // note this line
new AttributesMapper() {
public Object mapFromAttributes(Attributes attributes) throws NamingException {
return substringBeforeLast((String) attributes.get("cn").get(), "-") + "-";
}
});
}
});
products.remove(null);
return newHashSet(products);
}
}
ldapTemplete が構成されているLDAP.xmlが 1 つあります。
<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>
私はいくつかのクエリを持っています:
LDAP メソッドの TIMEOUT をどのように実装し、どのように構成することができますか? (LDAP フレームワークのタイムアウト設定が存在するクラス)
それらをxmlファイル、つまりLDAP.xml(この場合)で構成する方法はありますか?