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 от сервера после того, как начальное соединение устанавливается с сервером.