LDIF
Поддерживается только производитель
Компонент LDIF позволяет выполнять обновления на сервере LDAP из содержимого тела LDIF.
Этот компонент использует базовый синтаксис URL для доступа к серверу. Он использует библиотеку Apache DS LDAP для обработки LDIF-файла. После обработки LDIF-файла тело ответа будет представлять собой список статусов успешности/неуспешности каждой записи.
* API Apache LDAP очень чувствителен к синтаксическим ошибкам LDIF. В случае сомнений обратитесь к модульным тестам, чтобы увидеть примеры каждого типа изменений.
Пользователям Maven необходимо добавить следующую зависимость для pom.xml этого компонента:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-ldif</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>URI format
ldif:ldapServerBean[?options]
Часть ldapServerBean URI ссылается на LdapConnection (opens in a new tab) . Его следует создавать на основе фабрики в точке использования, чтобы избежать тайм-аутов соединения. Компонент LDIF поддерживает только конечные точки-производители, что означает, что ldifURI не может присутствовать в fromначале маршрута.
Для настройки SSL обратитесь к camel-ldapкомпоненту, где есть пример настройки пользовательского экземпляра SocketFactory.
Configuring Options
Компоненты Camel настраиваются на двух отдельных уровнях:
-
уровень компонентов
-
уровень конечной точки
Configuring Component Options
На уровне компонентов задаются общие и общие конфигурации, которые затем наследуются конечными точками. Это самый высокий уровень конфигурации.
Например, компонент может иметь настройки безопасности, учетные данные для аутентификации, URL-адреса для сетевого подключения и т. д.
У некоторых компонентов всего несколько параметров, а у других -- много. Поскольку компоненты обычно имеют предустановленные значения по умолчанию, которые широко используются, зачастую вам может потребоваться настроить лишь несколько параметров компонента, а то и вовсе ни одного.
Вы можете настроить компоненты, используя:
-
Компонент DSL (opens in a new tab) .
-
в файле конфигурации (
application.propertiesфайлы*.yaml, и т.д.). -
непосредственно в коде Java.
Configuring Endpoint Options
Настройка конечных точек обычно занимает больше времени, поскольку у них есть множество параметров. Эти параметры помогают вам настроить функции конечной точки. Параметры также классифицируются по тому, используется ли конечная точка как потребитель ( от ), как производитель ( от ) или и то, и другое.
Конечные точки чаще всего настраиваются непосредственно в URI конечной точки в виде параметров пути и запроса . Вы также можете использовать Endpoint DSL (opens in a new tab) и DataFormat DSL (opens in a new tab) в качестве типобезопасного способа настройки конечных точек и форматов данных в Java.
Хорошей практикой при настройке параметров является использование заполнителей свойств (opens in a new tab) .
Заполнители свойств обеспечивают несколько преимуществ:
-
Они помогают предотвратить использование жестко запрограммированных URL-адресов, номеров портов, конфиденциальной информации и других настроек.
-
Они позволяют вынести конфигурацию за пределы кода.
-
Они помогают коду стать более гибким и пригодным для повторного использования.
В следующих двух разделах перечислены все параметры, сначала для компонента, а затем для конечной точки.
Component Options
Компонент LDIF поддерживает 2 параметра, которые перечислены ниже.
lazyStartProducer (producer)
-
По умолчанию: Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.
-
По умолчанию: Тип: false
-
Тип: boolean
autowiredEnabled (advanced)
-
Включено ли автоматическое связывание. Это используется для параметров автоматического связывания (параметр должен быть помечен как autowired) путём поиска в реестре экземпляра соответствующего типа, который затем настраивается в компоненте. Это может использоваться для автоматической настройки источников данных JDBC, фабрик JMS-подключений, клиентов AWS и т. д.
-
По умолчанию: true
-
Тип: boolean
Endpoint Options
Конечная точка LDIF настраивается с использованием синтаксиса URI:
ldif:ldapConnectionName
Со следующими параметрами пути и запроса :
Path Parameters (1 parameters)
ldapConnectionName (producer)
-
Обязательно. Имя компонента LdapConnection, который необходимо извлечь из реестра. Обратите внимание, что это должно быть в области действия прототипа, чтобы избежать его совместного использования потоками или использования соединения, время ожидания которого истекло.
-
По умолчанию:
-
Тип: String
Query Parameters (1 parameters)
lazyStartProducer (producer (advanced))
-
Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.
-
По умолчанию: false
-
Тип: boolean
Usage
Body types:
Тело документа может представлять собой URL-адрес LDIF-файла или встроенного LDIF-файла. Чтобы обозначить разницу между типами тела документа, встроенный LDIF-файл должен начинаться с:
version: 1
В противном случае компонент попытается проанализировать тело как URL.
Result
Результат возвращается в теле Out в виде ArrayList<java.lang.String>объекта. Он содержит либо successсообщение об исключении, либо сообщение об исключении для каждой записи LDIF.
LdapConnection
URI, ldif:ldapConnectionName, ссылается на компонент с идентификатором . ldapConnectionNameldapConnection можно настроить с помощью LdapConnectionConfigкомпонента. Обратите внимание, что область действия должна быть ограничена, prototypeчтобы избежать совместного использования соединения или перехвата устаревшего соединения.
Компонент LdapConnectionможет быть определен в Spring XML следующим образом:
<bean id="ldapConnectionOptions" class="org.apache.directory.ldap.client.api.LdapConnectionConfig">
<property name="ldapHost" value="${ldap.host}"/>
<property name="ldapPort" value="${ldap.port}"/>
<property name="name" value="${ldap.username}"/>
<property name="credentials" value="${ldap.password}"/>
<property name="useSsl" value="false"/>
<property name="useTls" value="false"/>
</bean>
<bean id="ldapConnectionFactory" class="org.apache.directory.ldap.client.api.DefaultLdapConnectionFactory">
<constructor-arg index="0" ref="ldapConnectionOptions"/>
</bean>
<bean id="ldapConnection" factory-bean="ldapConnectionFactory" factory-method="newLdapConnection" scope="prototype"/>Examples
В соответствии с конфигурацией Spring, представленной выше, пример кода ниже отправляет LDAP-запрос на поиск члена группы с помощью фильтра. Затем из ответа извлекается общее имя.
ProducerTemplate<Exchange> template = exchange.getContext().createProducerTemplate();
List<?> results = (Collection<?>) template.sendBody("ldif:ldapConnection, "LDiff goes here");
if (results.size() > 0) {
// Check for no errors
for (String result : results) {
if ("success".equalTo(result)) {
// LDIF entry success
} else {
// LDIF entry failure
}
}
}Spring Boot Auto-Configuration
При использовании ldif с Spring Boot обязательно используйте следующую зависимость Maven для поддержки автоматической настройки:
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-ldif-starter</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>Компонент поддерживает 3 опции, которые перечислены ниже.
camel.component.ldif.autowired-enabled
-
Включено ли автоматическое связывание. Это используется для параметров автоматического связывания (параметр должен быть помечен как autowired) путём поиска в реестре экземпляра соответствующего типа, который затем настраивается в компоненте. Это может использоваться для автоматической настройки источников данных JDBC, фабрик JMS-подключений, клиентов AWS и т. д.
-
По умолчанию: true
-
Тип: Boolean
camel.component.ldif.enabled
-
Включить ли автоматическую настройку компонента ldif. По умолчанию эта опция включена.
-
По умолчанию:
-
Тип: Boolean
camel.component.ldif.lazy-start-producer
-
Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.
-
По умолчанию: false
-
Тип: Boolean