Я использую Apache Camel с CXF-RS, используя стандартную интеграцию, предоставляемую Camel (с использованием встроенного Jetty в исполняемом JAR), и он отлично работает.Интеграция Apache Camel CXF-RS + CXF Jax-RS OAuth
Я хочу, чтобы добавить поддержку OAuth (как OAuth 1 поставщика) на мой REST сервер, так как я уже использую CXF, я планирую использовать интеграцию CXF JAX-RS OAuth на нем: http://cxf.apache.org/docs/jax-rs-oauth.html
К сожалению, кажется, Мне нужно использовать сервлет для поддержки OAuth, и я стараюсь добавить это до вызова моего процессора Camel. Как мой маршрут определяется по формуле:
String CONTEXT = "?resourceClasses=" + MyServiceResource.class.getName();
final String cxfRSEndpointUri = "cxfrs://http://" + restServerUrl + ":" + restServerPort + CONTEXT;
from(cxfRSEndpointUri).process(restProcessor);
С точки процессорной зрения (restProcessor), я не могу получить HttpServletRequest и HttpServletResponse от объекта Exchange, маршрут cxfrs не дают мне правильные тела:
final HttpServletRequest request = exchange.getIn().getBody(HttpServletRequest.class);
final HttpServletResponse response = exchange.getOut().getBody(HttpServletResponse.class);
Эти две команды возвращают null: cxfrs не похож на классический маршрут HTTP Camel.
Есть ли способ настроить маршрут верблюда, который добавит фильтр сервлета (OAuthServletFilter, предоставленный CXF JAX-RS OAuth), прежде чем использовать маршрут cxfrs?
Другим способом, который я вижу, является проверка источников CXF JAX-RS OAuth: класс AbstractAuthFilter.java содержит реализацию проверок, необходимых OAuth, но, если возможно, я предпочитаю не разветвлять часть этого класса, и мне потребуется проверить HTTP-заголовки/значения из объекта обмена, заданного верблюдом вручную. Я считаю, что должен быть лучший способ сделать это, но, возможно, я ошибаюсь.
Почему бы не опубликовать окончательную конфигурацию, которая также работала? Было бы полезно ... – kaqqao