Мне нужно добавить объемные данные на сервер LDAP из файла ldif. Я исследовал API-интерфейсы Java, но не могу найти подходящий
Я уже пытался использовать LdapTestUtils, но для этого требуется перезапуск сервера. Мне нужен другой способ, кроме этого
Мне нужно добавить объемные данные на сервер LDAP из файла ldif. Я исследовал API-интерфейсы Java, но не могу найти подходящий
Я уже пытался использовать LdapTestUtils, но для этого требуется перезапуск сервера. Мне нужен другой способ, кроме этого
Вам нужно будет использовать отдельную библиотеку с API, поддерживающим импорт LDIF. Когда-то такой библиотекой является apache Directory LDAP API. Библиотека в целом совместима с большинством серверов LDAP.
См. документация, класс LdifFileLoader имеет функции для импорта LDIF в тандеме с классом DefaultDirectoryService (к сожалению, я не могу найти свой более ранний код, демонстрирующий импорт LDIF). Вы можете сослаться на этот пост, в котором показано, как использовать выше, хотя здесь речь идет о проблеме другого типа.
Я не уверен в том, какой LDAP-сервер вы используете, однако вы можете попробовать вышеизложенное и проверить.
Это также можно сделать с помощью LdapTemplate. LdapParser проанализирует запись из файла ldif в форме LdapAttribute, а затем привяжет эту запись через ldapTemplate.bind.
LdapContextSource contextSource = new LdapContextSource();
contextSource.setUrl("ldap://192.168.99.101:389/");
contextSource.setUserDn("uid=admin,dc=abc,dc=com");
contextSource.setPassword(********);
contextSource.setPooled(false);
contextSource.afterPropertiesSet();
LdapTemplate template = new LdapTemplate(contextSource);
LdifParser parser = new LdifParser(new ClassPathResource("schema.ldif"));
parser.open();
while (parser.hasMoreRecords()) {
LdapAttributes record = parser.getRecord();
LdapName dn = record.getName();
template.bind(dn, null, record);
}