У меня проблемы, попробуйте поискать группы в LDAP с помощью поиска spring-ldap с параллелизмом.
Я выполняю пакетную обработку для загрузки данных из базы данных SQL в LDAP.Я использую spring-boot и spring-ldap.
Мой алгоритм пытается найти группу в ldap, используя ее gidNumber.Работает нормально при запуске без параллелизма (stream.parallelStream).Но когда я выполняю итерацию списка с parallelStream, я иногда ловлю это исключение:
java.lang.ClassCastException: class com.sun.jndi.ldap.LdapCtx cannot be cast to class org.springframework.ldap.core.DirContextAdapter (com.sun.jndi.ldap.LdapCtx is in module java.naming of loader 'bootstrap'; org.springframework.ldap.core.DirContextAdapter is in unnamed module of loader java.net.URLClassLoader @4f0f76b4)
Я преобразовал объект из ContextMapper # mapFromContext в DirContextAdapter.Ссылка Spring-ldap говорит, что этот метод должен возвращать экземпляр DirContextAdapter, если я не изменяю DirObjectFactory LdapContextSource.
Мой код похож на:
ldapTemplate.search(
query().base(groupName()).where("gidNumber").is(Long.toString(gid)),
(ContextMapper<GroupLdap>) ctx -> {
DirContextAdapter context = (DirContextAdapter) ctx;
return new GroupLdap(context, true);
})
Мое приложение - пакетная обработка для загрузкиданные из базы данных SQL в LDAP.Я использую spring-boot и spring-ldap.
Я использую spring-boot 2.1.4, OpenLdap и ORACLE для SQL-DB.И open-jdk-zulu 11.
Мой алгоритм пытается найти группу в ldap, используя ее gidNumber.Работает нормально при запуске без параллелизма (stream.parallelStream).Но когда я выполняю итерацию списка с функцией parallelStream () и иногда улавливаю исключение ClassCastException:
Я добавляю соединение с пулом ldap, но оно не работает.
Мой код похож на:
ldapTemplate.search(
query().base(groupName()).where("gidNumber").is(Long.toString(gid)),
(ContextMapper<GroupLdap>) ctx -> {
DirContextAdapter context = (DirContextAdapter) ctx;
return new GroupLdap(context, true);
})
groupName - это имя со ссылками на "ou = groups, dc = fff, dc = br";
gid - это число с gitNumber для искомой группы.
GroupLdapявляется внутренним представлением группы в LDAP.
При параллелизме я иногда получаю исключение:
java.lang.ClassCastException: class com.sun.jndi.ldap.LdapCtx cannot be cast to class org.springframework.ldap.core.DirContextAdapter (com.sun.jndi.ldap.LdapCtx is in module java.naming of loader 'bootstrap'; org.springframework.ldap.core.DirContextAdapter is in unnamed module of loader java.net.URLClassLoader @4f0f76b4)
Я преобразовал объект из ContextMapper # mapFromContext в DirContextAdapter.Ссылка Spring-ldap говорит, что этот метод должен возвращать экземпляр DirContextAdapter, если я не изменяю DirObjectFactory LdapContextSource.