Ну, вот один из способов сделать это. Возможно, это не лучший подход (комментарии приветствуются ...), но здесь это в любом случае.
У вас, очевидно, есть wsdl для вашего веб-сервиса и код, который выполняет бизнес-логику.
Создайте модуль Maven для вашего веб-сервиса с использованием cxf-codegen-plugin
(для generated-sources
) и maven-bundle-plugin
(для расслоения конфигурации и OSGI проводке)
В вашем blueprint.xml
определить ваш <camel-cxf:cxfEndpoint id="abc" ...
где serviceClass
ваш сгенерированный класс интерфейс конечной точки ,
Определить <camel:camelContext id="abc" ...>
с помощью <camel:routeBuilder ref="xyz"/>
, ссылаясь на компонент, который вы определяете, который распространяется на RouteBuilder
.
Теперь мы работаем в классе, который распространяется на RouteBuilder
. Затем метод configure()
должен настраивать маршруты верблюдов, соответствующие каждой из операций в вашей веб-службе. Используйте java свободно строительный синтаксис.
Вот пример беглого синтаксиса строителя:
from("direct:myOperation")
.routeId("myOperation")
.onException(SomeException.class).doSomething().doSomethingElse();
.validate(/* an expression */)
.beanRef("myBusinessLogicBean", "someMethod")
.convertBodyTo(MyResult.class)
В основном, мы сделали слой маршрутизации и переписан его как маршрут верблюда, и бизнес-логика вызывается через beanRef
- где компонент bean и его зависимости (например, datasources/dao или persistence.xml) настроены в файле blueprint.xml.
Есть несколько действительно хороших вещей, которые вы можете сделать в свободном синтаксисе компоновщика - просто Google camel cxf
и просмотрите множество примеров. У вас также есть доступ ко всем EIP (шаблонам корпоративной интеграции).
Последнее, что вам нужно сделать, это определить feature.xml
, который использует <bundle>
и определяет правильные <feature>
зависимостей (например, camel-cxf
, camel-jpa
и т.д.).
Надеюсь, это поможет вам начать работу.
Хороший ответ ... должен быть принят. – Namphibian