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