Пул соединений с Oracle Internet Directory - PullRequest
2 голосов
/ 22 августа 2011

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

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

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

1 Ответ

1 голос
/ 25 января 2012

Ваш страх, вероятно, вполне обоснован: объединение в пул сокращает сбор мусора и время пауз для соединений с сокетами, но я бы весьма посоветовал проверить ваши предположения в отношении профилировщика, такого как 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 или что-то еще, чтобы проверить поведение.

...