CXF Client Interceptor, чтобы всегда сначала вызывать другой метод? - PullRequest
1 голос
/ 22 марта 2011

Я имею дело с веб-сервисом, которому необходимо вызвать метод «аутентификации» и вернуть возвращаемый токен в специальный заголовок, чтобы каждый раз выполнять следующую операцию. Кажется логичным попытаться сделать это в перехватчике CXF. Я бы видел, как это работает как

Объект клиента CXF, введенный в объект бизнес-логики. Объект BusinessLogic вызывает операцию A. Перехватчик определяет, что сначала должна быть вызвана операция B, и вызывает Op B, затем добавляет заголовок к исходному вызову A, а затем он является исходящим.

Очевидно, что имеет смысл делать это атомарно или потенциально рекурсивно (если Перехватчик знает, что вызовы Op B проходят). Ужасный, хакерский способ, которого я хотел бы избежать, состоял бы в том, чтобы Interceptor имел циклическую зависимость от службы. Я также хотел бы избежать уродливого хакерского способа по сути поставить два клиентских объекта и перехватить один, а другой - нет. Кажется, должен быть какой-то способ сделать это, и я действительно знаю, что в классе Service есть диспетчер методов, но я не знаю, как вызвать операцию, которая приведет к исходящему вызову.

1 Ответ

0 голосов
/ 21 сентября 2014

Я понимаю, что это действительно старый вопрос, и @jcalvert уже давно нашел решение или другую карьеру.

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

И да, можно создать перехватчик с полным состоянием, который бы поддерживал то, что фактически является токеном сеанса, но клиент был бы вынужден иметь операцию «выхода из системы» для удаления ассоциации.

Моим первым предложением было бы разобраться с ситуацией на прикладном уровне: изменить интерфейс клиента так, чтобы для каждой операции требовался токен авторизации. Если он отсутствует, веб-служба получает его и возвращает для всех операций.

...