|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Когда с просьбой 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 от сервера после того, как начальное соединение устанавливается с сервером.