Jetty

Поддерживается только потребитель

Компонент Jetty предоставляет HTTP-конечные точки для потребления и создания HTTP-запросов. То есть компонент Jetty ведёт себя как простой веб-сервер.

Jetty работает на основе потоков, что означает, что полученные данные передаются в Camel в виде потока. Это означает, что содержимое потока можно прочитать только один раз. Если вы столкнулись с ситуацией, когда тело сообщения кажется пустым, или вам нужно получить доступ к данным Exchange.HTTP_RESPONSE_CODE несколько раз (например, при мультивещании или обработке ошибок с повторной доставкой), вам следует использовать кэширование потоков (Stream caching) или преобразовать тело сообщения в строку, которую можно безопасно перечитывать несколько раз.

Пользователям Maven необходимо добавить следующую зависимость в свой pom.xml для этого компонента:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-jetty</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);">jetty:http://hostname[:port][/resourceUri][?options]</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

Async

  • Настраивает потребителя на работу в асинхронном режиме.

  • По умолчанию: false

  • Тип: boolean

Chunked

  • Если эта опция имеет значение false, Servlet отключит потоковую передачу HTTP и установит заголовок content-length в ответе.

  • По умолчанию: true

  • Тип: boolean

Continuation Timeout

  • Позволяет установить таймаут в миллисекундах при использовании Jetty в качестве потребителя (сервера). По умолчанию Jetty использует 30000. Вы можете использовать значение = 0, чтобы таймаут никогда не истекал. Если таймаут истекает, запрос будет завершён, и Jetty вернёт клиенту HTTP-ошибку 503. Эта опция используется только при использовании Jetty с асинхронным механизмом маршрутизации.

  • По умолчанию: 30000

  • Тип: Long

Disable Stream Cache

  • Определяет, кэшируется ли исходный входной поток или нет. Потребитель Camel (camel-servlet, camel-jetty и т.д.) по умолчанию кэширует входной поток, чтобы поддерживать его многократное чтение и гарантировать, что Camel сможет извлечь все данные из потока. Однако вы можете установить эту опцию в true, если вам, например, нужен доступ к исходному потоку, например, для его прямой потоковой передачи в файл или другое постоянное хранилище. DefaultHttpBinding скопирует входной поток запроса в кэш потока и поместит его в тело сообщения, если эта опция имеет значение false, чтобы поддерживать многократное чтение потока. Если вы используете Servlet для моста/проксирования endpoint, рассмотрите возможность включения этой опции для повышения производительности, если вам не нужно многократно читать полезную нагрузку сообщения. Производитель (camel-http) по умолчанию кэширует поток тела ответа. Если установить эту опцию в true, производители не будут кэшировать поток тела ответа, а будут использовать поток ответа как есть (поток можно прочитать только один раз) в качестве тела сообщения.

  • По умолчанию: false

  • Тип: boolean

Enable CORS

  • Если опция имеет значение true, сервер Jetty настроит CrossOriginFilter, который поддерживает CORS из коробки.

  • По умолчанию: false

  • Тип: boolean

Enable Jmx

  • Если эта опция имеет значение true, поддержка JMX в Jetty будет включена для этой endpoint.

  • По умолчанию: false

  • Тип: boolean

Enable Multipart Filter

  • Определяет, включён ли org.apache.camel.component.jetty.MultiPartFilter или нет. Вы должны установить это значение в false при мостах endpoints, чтобы гарантировать, что многокомпонентные запросы также проксируются/передаются.

  • По умолчанию: false

  • Тип: boolean

Http Method Restrict

  • Используется для разрешения потребления только в случае совпадения HttpMethod, например, GET/POST/PUT и т.д. Несколько методов могут быть указаны через запятую.

  • По умолчанию:

  • Тип: String

Http Uri

  • Обязательный параметр. URL HTTP-endpoint для вызова.

  • По умолчанию:

  • Тип: URI

Match On Uri Prefix

  • Тип: Определяет, должен ли потребитель пытаться найти целевого потребителя, сопоставляя префикс URI, если точное совпадение не найдено.

  • По умолчанию: false

  • Тип: boolean

Mute Exception

  • Если включена опция и обработка Exchange завершилась ошибкой на стороне потребителя, тело ответа не будет содержать трассировку стека исключения.

  • По умолчанию: false

  • Тип: boolean

Response Buffer Size

  • Использует пользовательский размер буфера для jakarta.servlet.ServletResponse.

  • По умолчанию:

  • Тип: Integer

Send Date Header

  • Если опция имеет значение true, сервер jetty отправит заголовок даты клиенту, который отправляет запрос.

    Примечание: убедитесь, что никакая другая endpoint camel-jetty не использует тот же порт, иначе эта опция может не работать должным образом.

  • По умолчанию: false

  • Тип: boolean

Send Server Version

  • Если опция имеет значение true, jetty отправит заголовок сервера с информацией о версии jetty клиенту, который отправляет запрос. Примечание: убедитесь, что никакая другая endpoint camel-jetty не использует тот же порт, иначе эта опция может не работать должным образом.

  • По умолчанию: true

  • Тип: boolean

Session Support

  • Определяет, следует ли включить менеджер сессий на стороне сервера Jetty.

  • По умолчанию: false

  • Тип: boolean

Transfer Exception

  • Если опция включена и обработка Exchange завершилась ошибкой на стороне потребителя, и если вызванное исключение было отправлено обратно в ответе в сериализованном виде с типом содержимого application/x-java-serialized-object. На стороне производителя исключение будет десериализовано и выброшено как есть, вместо HttpOperationFailedException. Вызванное исключение должно быть сериализовано. По умолчанию эта функция отключена. Если вы включите её, учтите, что Java будет десериализовать входящие данные из запроса в Java, что может представлять потенциальный риск для безопасности.

  • По умолчанию: false

  • Тип: boolean

Use Continuation

  • Определяет, использовать ли продолжения (continuations) Jetty для сервера Jetty.

  • По умолчанию:

  • Тип: Boolean

Component security properties

Ssl Context Parameters

  • Для настройки безопасности с использованием SSLContextParameters.

  • По умолчанию:

  • Тип: SSLContextParameters

Component advanced properties

Bridge Error Handler

  • Тип: Предоставляет возможность связать потребителя с маршрутизатором Error Handler Camel. Это позволяет обрабатывать исключения (если возможно), возникающие при получении входящих сообщений потребителем Camel, в виде сообщений, передаваемых в маршрутизатор Error Handler.

    Важно: Это возможно только в том случае, если сторонний компонент позволяет Camel получать уведомления о возникших исключениях. Некоторые компоненты обрабатывают исключения только внутренне, из-за чего использование bridgeErrorHandler становится невозможным. В некоторых случаях мы можем доработать компонент Camel, чтобы интегрировать его со сторонним компонентом и сделать такую возможность доступной в будущих выпусках. По умолчанию потребитель использует org.apache.camel.spi.ExceptionHandler для обработки исключений, которые логируются с уровнем WARN или ERROR и игнорируются.

  • По умолчанию: false

  • Тип: boolean

Eager Check Content Available

  • Определяет, следует ли активно проверять, есть ли содержимое в HTTP-запросах, если заголовок content-length равен 0 или отсутствует. Это может быть включено, если HTTP-клиенты не отправляют потоковые данные.

  • По умолчанию: false

  • Тип: boolean

Exception Handler

  • Позволяет потребителю использовать собственный ExceptionHandler.

    Обратите внимание, что если включена опция bridgeErrorHandler, то эта настройка не используется. По умолчанию потребитель обрабатывает исключения, которые логируются с уровнем WARN или ERROR и игнорируются.

  • По умолчанию:

  • Тип: ExceptionHandler

Exchange Pattern

  • Определяет шаблон взаимодействия, который применяется, когда потребитель создает новый обмен (exchange).

    Возможные значения:

    • InOnly

    • InOut

  • По умолчанию:

  • Тип: ExchangePattern

Filter Init Parameters

  • Тип: Конфигурация параметров инициализации фильтра. Эти параметры будут применены к списку фильтров перед запуском сервера jetty.

  • По умолчанию:

  • Тип: Map

Filters

  • Позволяет использовать пользовательские фильтры, которые добавляются в список и могут быть найдены в реестре. Несколько значений могут быть разделены запятыми.

  • По умолчанию:

  • Тип: List

Handlers

  • Тип: Указывает набор экземпляров Handler, разделённых запятыми, для поиска в вашем реестре. Эти обработчики добавляются в контекст servlet Jetty (например, для добавления безопасности). Важно: вы не можете использовать разные обработчики с разными endpoints Jetty, использующими один и тот же номер порта. Обработчики связаны с номером порта. Если вам нужны разные обработчики, используйте разные номера портов.

  • По умолчанию:

  • Тип: List

Header Filter Strategy

  • Используется Чтобы применить собственную стратегию фильтрации заголовков org.apachч.camel.spi.HeaderFilterStrategy для фильтрации заголовков сообщений Camel.

  • По умолчанию:

  • Тип: HeaderFilterStrategy

Http Binding

  • Тип: Использует пользовательский HttpBinding для управления сопоставлением между сообщением Camel и HttpClient.

  • По умолчанию:

  • Тип: HttpBinding

Map Http Message Body

  • Если эта опция имеет значение true, то тело обмена (IN exchange Body) будет сопоставлено с телом HTTP. Установка значения false позволит избежать HTTP-сопоставления.

  • По умолчанию: true

  • Тип: boolean

Map Http Message Form Url Encoded Body

  • Если эта опция имеет значение true, то тело обмена в формате Form Encoded (IN exchange Form Encoded body) будет сопоставлено с HTTP. Установка значения false позволит избежать сопоставления тела в формате Form Encoded.

  • По умолчанию: true

  • Тип: boolean

Map Http Message Headers

  • Если эта опция имеет значение true, то заголовки обмена (IN exchange Headers) будут сопоставлены с HTTP-заголовками. Установка значения false позволит избежать сопоставления HTTP-заголовков.

  • По умолчанию: true

  • Тип: boolean

Multipart Filter

  • Позволяет использовать пользовательский фильтр для многокомпонентных данных (multipart filter). Примечание: установка multipartFilterRef принудительно устанавливает значение enableMultipartFilter в true.

  • По умолчанию:

  • Тип: Filter

Options Enabled

  • Указывает, следует ли включить HTTP OPTIONS для этого потребителя Servlet. По умолчанию OPTIONS отключён.

  • По умолчанию: false

  • Тип: boolean

Trace Enabled

  • Указывает, следует ли включить HTTP TRACE для этого потребителя Servlet. По умолчанию TRACE отключён.

  • По умолчанию: false

  • Тип: boolean