2013-05-01 1 views
0

Я действительно зациклился на том, как интегрировать свои бизнес-приложения в Fuse ESB. В частности - функциональность веб-сервисов. У меня есть пара вопросов -Предохранитель ESB и веб-сервисы - как выявлять маршруты как веб-сервисы или обертывать существующие сервисы в виде веб-сервисов

1) Могу ли я «обернуть» blueprint.xml в Fuse ESB в качестве веб-сервиса и назвать его из бизнес-приложения?

2) Как я могу предоставить существующую функциональность в качестве веб-служб и позвонить им, используя Fuse ESB?

Спасибо всем, кто знает, кто может мне помочь!

ответ

2

Ну, вот один из способов сделать это. Возможно, это не лучший подход (комментарии приветствуются ...), но здесь это в любом случае.

У вас, очевидно, есть wsdl для вашего веб-сервиса и код, который выполняет бизнес-логику.

  1. Создайте модуль Maven для вашего веб-сервиса с использованием cxf-codegen-plugin (для generated-sources) и maven-bundle-plugin (для расслоения конфигурации и OSGI проводке)

  2. В вашем blueprint.xml определить ваш <camel-cxf:cxfEndpoint id="abc" ... где serviceClass ваш сгенерированный класс интерфейс конечной точки ,

  3. Определить <camel:camelContext id="abc" ...> с помощью <camel:routeBuilder ref="xyz"/>, ссылаясь на компонент, который вы определяете, который распространяется на RouteBuilder.

  4. Теперь мы работаем в классе, который распространяется на 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 и т.д.).

Надеюсь, это поможет вам начать работу.

+0

Хороший ответ ... должен быть принят. – Namphibian