Пул соединений с Oracle Internet Directory

Я использую Oracle Java API Extensions для JNDI для доступа к Oracle Internet Directory 11g (библиотека ldapjclnt11.jar). Новый контекст каталога (соединение) создается вызовом ConnectionUtil.getDefaultDirCtx().

Мой вопрос: использует ли этот механизм для создания соединения с OID какой-то пул соединений для соединений JNDI? если нет, есть ли способ объединить соединения?

Я буду аутентифицировать сотни пользователей одновременно с помощью OID, и я беспокоюсь, что производительность пострадает, если я не объединю свои соединения OID.


person Óscar López    schedule 22.08.2011    source источник


Ответы (1)


Ваши опасения, вероятно, вполне обоснованы: создание пула сокращает сбор мусора и сокращает время паузы для подключений к сокетам, но я бы настоятельно посоветовал проверить ваши предположения с помощью профилировщика, такого как VisualVM. Каждая проблема с производительностью, которую я когда-либо решал, оказалась не такой, как я думал. Не делайте слепых предположений о своем коде!

Предполагая, что вы используете JVM Sun/Oracle, есть свойство для включения прозрачного пула:

Hashtable env = new Hashtable();
env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=myroot");
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put("com.sun.jndi.ldap.connect.pool", "true");
DirContext ctx = new InitialDirContext(env);

Класс ConnectionUtil не позволяет устанавливать это свойство, но вы можете попробовать установить следующие свойства на JVM, если вам необходимо использовать ConnectionUtil:

-Dcom.sun.jndi.ldap.connect.pool=true

Хотя не уверен, что это сработает. Вам нужно будет использовать wireshark или что-то еще, чтобы проверить поведение.

person Jonathan S. Fisher    schedule 25.01.2012