Отправка Apache Camel в локальные реализации ресурсов JaxRs

У меня есть конечная точка cxf-rs верблюда, которая разбивает запросы на две основные части.

form("cxfrs:bean:rsServer")
    .when(isForward()).to("cxfrs:http://example.com")
    .otherwise().process(myCustomDispatcher)  // i want to get rid of this custom dispatcher

Первая часть напрямую перенаправляется в другой сервис.

Для второй части я хотел бы отправить/вызвать классы/методы, которые имеют аннотацию jaxrs. В настоящее время у меня есть собственный процессор myCustomerDispatcher, который дублирует логику из аннотаций и вручную отправляет классы и методы. Особенно дублируются @Path и @PathParams.

Я пытался:

  • to("bean:MyJaxRsImplemantion") это будет работать для bean-компонентов с одним методом, соответствующим параметрам в обмене верблюдами, но не учитывает аннотации jax-rs.

  • Несколько комбинаций с to("cxfrs:bean:cxfEndpoint?resourceClasses=MyJaxRsImplemantion"). он либо требует адрес пересылки, либо действует как новая конечная точка, создавая верблюжьи обмены. Я не мог найти способ вызвать фактическую реализацию.

  • Кажется, что все ProduceTemplates обрабатывают отдельные пути или ситуации.

Вопрос:

Как я могу написать верблюжий маршрут, который фактически вызывает методы ресурсов jax-rs без переадресации на новую службу?


person k5_    schedule 13.09.2020    source источник


Ответы (1)


На самом деле это очень сложный вопрос. Во-первых, даже когда вы гуглите, вы не получаете прямых ответов. После вечного веб-серфинга кажется, что закон страны для верблюжьих маршрутов - вызывать методы ресурсов jx-rs путем переадресации на новый сервис. И да, похоже, что to("bean:MyJxRsImplemantion") ПРЕДНАЗНАЧЕН для игнорирования аннотаций jax-rs. Поэтому я решил, что это невозможно. Извиняюсь.

person pycoder    schedule 22.09.2020