CXF-RS
Поддерживаются как производитель, так и потребитель.
Компонент CXFRS предоставляет интеграцию с Apache CXF для подключения к сервисам JAX-RS 1.1 и 2.0, размещённым в CXF.
Пользователям Maven необходимо добавить следующую зависимость в свой pom.xml для этого компонента:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-cxf-rest</artifactId>
<version>x.x.x</version> <!-- use the same version as your Camel core version -->
</dependency>URI format
<span style="color: rgb(0,0,0);">cxfrs://address?options</span>
Где address представляет собой адрес CXF endpoint’s.
<span style="color: rgb(0,0,0);">cxfrs:bean:rsEndpoint</span>
Где rsEndpoint представляет spring bean’s name, которое соответствует клиенту или серверу CXFRS.
Для любого из указанных выше стилей вы можете добавить параметры к URI следующим образом:
<span style="color: rgb(0,0,0);">cxfrs:bean:cxfEndpoint?resourceClasses=org.apache.camel.rs.Example</span>
Configuring Options
Компоненты настраиваются на двух отдельных уровнях:
-
component level
-
edpoint level
Configuring Component Options
На уровне компонента задаются основные и общие настройки, которые впоследствии наследуются endpoints. Это самый высокий уровень конфигурации.
Например, компонент может иметь настройки безопасности, учетные данные для аутентификации, URL-адреса для сетевых подключений и т. д.
Некоторые компоненты имеют всего несколько параметров, в то время как у других их может быть много. Поскольку компоненты обычно имеют предварительно настроенные значения по умолчанию, которые используются в большинстве случаев, вам может понадобиться настроить только несколько параметров компонента или вообще ничего не настраивать.
Компоненты можно настроить с использованием:
-
Component DSL.
-
Конфигурационного файла (application.properties, *.yaml files, etc).
-
Напрямую в Java code.
Configuring Endpoint Options
Обычно больше времени уходит на настройку endpoints, так как они обладают множеством параметров. Эти параметры позволяют настроить поведение endpoint в соответствии с вашими потребностями. Кроме того, параметры делятся на категории в зависимости от того, используется ли endpoint как потребитель (from), как производитель (to) или в обеих ролях.
Настройка endpoints чаще всего выполняется непосредственно в URI endpoint в виде параметров пути и запроса. Также вы можете использовать Endpoint DSL и DataFormat DSL как типобезопасный способ настройки endpoints и форматов данных в Java.
Хорошей практикой при настройке параметров является использование Property Placeholders.
Property placeholders предоставляют несколько преимуществ:
-
Помогают избежать использования жестко закодированных URL-адресов, номеров портов, конфиденциальной информации и других настроек.
-
Позволяют вынести конфигурацию за пределы кода.
-
Делают код более гибким и удобным для повторного использования.
Component properties
Address
-
Адрес для публикации сервиса.
-
По умолчанию:
-
Тип: String
-
Тип: Bean Id
-
Для поиска уже настроенного CxfEndpoint. Необходимо использовать префикс bean.
-
String
Binding Style
-
Устанавливает, как запросы и ответы будут отображаться в Camel. Возможны два значения:
SimpleConsumer: Этот стиль связывания обрабатывает параметры запроса, мультимедиа и т. д., и отображает их в заголовках IN, вложениях IN и теле сообщения. Он стремится устранить low-level обработку org.apache.cxf.message.MessageContentsList. Также добавляется больше гибкости и простоты для отображения ответа. Доступен только для потребителей.
Default: Стиль по умолчанию. Для потребителей он передает MessageContentsList в маршрут, требуя low-level обработки в маршруте. Это традиционный стиль связывания, который просто передает org.apache.cxf.message.MessageContentsList, полученное от стека CXF, в тело сообщения IN. Пользователь затем несет ответственность за обработку этого в соответствии с контрактом, определенным в подписи метода JAX-RS.
Custom: Позволяет задать пользовательское связывание через параметр binding.
Возможные значения:
-
SimpleConsumer
-
Default
-
Custom
-
-
По умолчанию: Default
-
Тип: BindingStyle
Features
-
Устанавливает список функций для CxfRs endpoint..
-
По умолчанию:
-
Тип: List
-
Тип: Logging Feature Enabled
-
Этот параметр включает функцию CXF Logging Feature, которая записывает входящие и исходящие REST-сообщения в логи.
-
false
-
boolean
Logging Size Limit
-
Устанавливает лимит на общий размер данных в байтах, который логгер может вывести при активированной функции логирования. Для снятия ограничения используйте значение -1.
-
По умолчанию: 49152
-
Тип: int
Model Ref
-
Эта опция предназначена для указания модели, которая будет полезна для класса ресурса без аннотаций. Когда эта опция используется, класс сервиса можно опустить для имитации endpoints только с документами.
-
По умолчанию:
-
Тип: String
-
Тип: Providers
-
Устанавливает список собственных provider(s) JAX-RS для CxfRs endpoint. Вы можете указать строку со списком providers, которые нужно найти в реестре, разделенных запятой.
-
String
Published Endpoint Url
-
Эта опция может переопределить endpointUrl, опубликованный в WADL, который можно получить по адресу ресурса, добавив к URL суффикс _wadl.
-
По умолчанию:
-
Тип: String
-
Тип: Resource Classes
-
Классы ресурсов, которые вы хотите экспортировать как REST-сервис. Несколько классов можно разделить запятой.
-
List
Schema Locations
-
Задает местоположения schema(s), используемых для проверки входящих XML или JSON, управляемых JAXB.
-
По умолчанию:
-
Тип: List
-
Тип: Skip Fault Logging
-
Данная опция управляет тем, пропустит ли PhaseInterceptorChain логирование ошибки (Fault), которую она перехватывает.
-
false
-
boolean
Component advanced properties
Binding
-
Для использования пользовательского CxfBinding, который контролирует преобразование между Camel Message и CXF Message.
-
По умолчанию:
-
Тип: CxfRsBinding
-
Тип: Bridge Error Handler
-
Предоставляет возможность связать потребителя с маршрутизатором Error Handler Camel. Это позволяет обрабатывать исключения (если возможно), возникающие при получении входящих сообщений потребителем Camel, в виде сообщений, передаваемых в маршрутизатор Error Handler.
Важно: Это возможно только в том случае, если сторонний компонент позволяет Camel получать уведомления о возникших исключениях. Некоторые компоненты обрабатывают исключения только внутренне, из-за чего использование bridgeErrorHandler становится невозможным. В некоторых случаях мы можем доработать компонент Camel, чтобы интегрировать его со сторонним компонентом и сделать такую возможность доступной в будущих выпусках. По умолчанию потребитель использует org.apache.camel.spi.ExceptionHandler для обработки исключений, которые логируются с уровнем WARN или ERROR и игнорируются.
-
false
-
boolean
Bus
-
Для конфигурации пользовательского CXF Bus.
-
По умолчанию:
-
Тип: Bus
-
Тип: Continuation Timeout
-
Эта опция устанавливает тайм-аут для продолжения работы CXF, который может быть применен по умолчанию в CxfConsumer, если сервер CXF использует транспорт Jetty или Servlet.
-
30000
-
long
Cxf Rs Configurer
-
Эта опция позволяет применить реализацию org.apache.camel.component.cxf.jaxrs.CxfRsEndpointConfigurer, которая поддерживает программную настройку CXF endpoint. Пользователь может настроить сервер и клиент CXF, реализовав метод configure\{Server/Client} интерфейса CxfEndpointConfigurer.
-
По умолчанию:
-
Тип: CxfRsConfigurer
-
Тип: Default Bus
-
Будет использовать bus по умолчанию при автоматическом создании bus CXF endpoint.
-
false
-
boolean
Exception Handler
-
Позволяет потребителю использовать собственный ExceptionHandler.
Обратите внимание, что если включена опция bridgeErrorHandler, то эта настройка не используется. По умолчанию потребитель обрабатывает исключения, которые логируются с уровнем WARN или ERROR и игнорируются.
-
По умолчанию:
-
Тип: ExceptionHandler
-
Тип: Exchange Pattern
-
Определяет шаблон взаимодействия, который применяется, когда потребитель создает новый обмен (exchange).
Возможные значения:
-
InOnly
-
InOut
-
-
ExchangePattern
Header Filter Strategy
-
Чтобы применить собственную стратегию фильтрации заголовков org.apache.camel.spi.HeaderFilterStrategy для фильтрации заголовков сообщений Camel.
-
По умолчанию:
-
Тип: HeaderFilterStrategy
-
Тип: Perform Invocation
-
При значении параметра true, Camel осуществляет вызов экземпляра ресурсного класса и добавляет ответ в обмен для дальнейшей обработки.
-
false
-
boolean
Propagate Contexts
-
Когда этот параметр установлен в значение true, контексты JAXRS UriInfo, HttpHeaders, Request и SecurityContext будут доступны пользовательским процессорам CXFRS как типизированные свойства Camel Exchange. Эти контексты можно использовать для анализа текущих запросов с использованием API JAX-RS.
-
По умолчанию: false
-
Тип: boolean
Service Beans
-
Сервисные beans (идентификаторы bean для поиска в реестре), которые вы хотите экспортировать как REST-сервис. Несколько beans можно разделить запятой.
-
По умолчанию:
-
Тип: String