Spec-Zone .ru
спецификации, руководства, описания, API
След: Именование Java и Интерфейс Каталога
Урок: Новые функции в JDK 5.0 и JDK 6
Установка Тайм-аута для Операций Ldap
Домашняя страница > Именование Java и Интерфейс Каталога > Новые функции в JDK 5.0 и JDK 6

Установка Тайм-аута для Операций Ldap

Когда с просьбой LDAP обращается клиент к серверу, и сервер не отвечает по некоторым причинам, клиент ожидает навсегда сервера, чтобы ответить до тайм-аутов TCP. На стороне клиента, что испытывает пользователь, esentially, который подвешивает процесс. Чтобы управлять запросом LDAP своевременно, тайм-аут чтения может быть сконфигурирован для Sun Поставщик услуг JNDI/LDAP начиная с Java SE 6.

Новое свойство среды:

com.sun.jndi.ldap.read.timeout

может использоваться, чтобы определить тайм-аут чтения для работы LDAP. Значение этого свойства является строковым представлением целого числа, представляющего тайм-аут чтения в миллисекундах для операций LDAP. Если провайдер LDAP не получает ответ LDAP в пределах установленного периода, он прерывает попытку чтения. Целое число должно быть больше чем нуль. Целое число, меньше чем или равное, чтобы обнулить средства, никакой тайм-аут чтения не определяется, который эквивалентен ожиданию ответа бесконечно, пока это не получается который значения по умолчанию к исходному поведению.

Если это свойство не определяется, значение по умолчанию должно ожидать ответа, пока это не получается.
Например, env.put("com.sun.jndi.ldap.read.timeout", "5000"); заставляет поставщика услуг LDAP прерывать попытку чтения, если сервер не отвечает ответом в течение 5 секунд.

Вот пример, ReadTimeoutTest, это использует фиктивный сервер, который не отвечает на запросы LDAP, чтобы показать, как это свойство ведет себя когда установлено в ненулевое значение.

env.put(Context.INITIAL_CONTEXT_FACTORY,
        "com.sun.jndi.ldap.LdapCtxFactory");
env.put("com.sun.jndi.ldap.read.timeout", "1000");
env.put(Context.PROVIDER_URL, "ldap://localhost:2001");

Server s = new Server();

try {

    // start the server
    s.start();
 
   // Create initial context
   DirContext ctx = new InitialDirContext(env);
   System.out.println("LDAP Client: Connected to the Server");
        :
        :
} catch (NamingException e) {
   e.printStackTrace();
}

Вышеупомянутая программа печатает трассировку стека ниже, поскольку сервер даже не отвечает на LDAP, связывают запрос, когда InitialDirContext создается. Клиентские времена, ожидая ответа сервера.

Server: Connection accepted
javax.naming.NamingException: LDAP response read timed out, timeout used:1000ms.
:
:

at javax.naming.directory.InitialDirContext.<init>(InitialDirContext.java:82)
at ReadTimeoutTest.main(ReadTimeoutTest.java:32)

Отметьте, что это свойство отличается от другого свойства com.sun.jndi.ldap.connect.timeout среды, которое устанавливает тайм-аут для того, чтобы соединиться с сервером. Тайм-аут чтения применяется к ответу LDAP от сервера после того, как начальное соединение устанавливается с сервером.


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Управление Именем Родственника Дистрингуишеда (RDN)
Следующая страница: Конец Следа