Создание простейшего Proxy-сервиса в WSO2 Development Studio

После установки WSO2 ESB вы можете создавать для нее сервисы самым разным образом:

  • Непосредственно в Management Console - там есть возможность создания Proxy-сервиса используя встроенный Wizard
  • Создавая проекты на Maven в любом доступном редакторе с последующим их deploy-ем на сервер.

Сегодня я хотел бы рассказать о создании простейшего сервиса с использованием WSO2 Developer Studio.

Среда разработчика WSO2 - это Eclipse (для текущей версии 3.7.1 базируется на Eclipse Kepler) плюс набор плагинов, которые упрощают работу с серверами WSO2 и разработку приложений для них.

Основной стартовой точкой при работе с WSO2 будет Developer Studio Dashboard (доступно из меню Developer Studio -> Dashboard).

Добавление сервера WSO2 ESB в Eclipse

Для работы с WSO2 ESB первым делом необходимо добавить в сервера ранее установленный сервер WSO2. Делается это стандартным образом:

  • Окно Servers -> Add New Server -> WSO2 -> WSO2 Carbon 4.2 based server
  • CARBON_HOME - выбираем путь на сервер <wso2esb>
  • На следующей вкладке можно изменить используемые порты
  • Finish

Теперь мы можем запускать, останавливать и отлаживать сервер WSO2 ESB прямо в Eclipse

Создание Proxy-Сервиса

После установки в WSO2 ESB создается простейший сервис echo, доступный по адресу http://localhost:8280/services/echo - который может использоваться для тестрования. Рассмотрим содание простейшего Proxy для данного сервиса.

Для начала создаем проект:

  • Developer Studio Dahsboard -> ESB Config Project
  • В первом окне wizar-а "New ESB Config Project"
  • Project Name: EchoProxy
  • Finish

Дальше, создаем в проекте Proxy сервис

  • Кликаем на проекте правой кнопкой, New

  • Proxy Service
  • "Create A New Proxy Service"
  • Proxy  Service Name: EchoProxyService
  • Proxy Service Type: WSDL Based Proxy
  • WSDL URI: http://localhost:8280/services/echo?wsdl
  • WSDL Port: echoHttpSoap11Endpoint
  • Publish Same Service Contract

В итоге получаем сервис:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse" name="EchoProxyService" transports="https http" startOnLoad="true" trace="disable">
    <target>
      <outSequence>
         <send/>
      </outSequence>
      <endpoint>
         <wsdl service="echo"
               port="echoHttpSoap11Endpoint"
               uri="http://localhost:8280/services/echo?wsdl"/>
      </endpoint>
   </target>
   <publishWSDL uri="http://localhost:8280/services/echo?wsdl"/>
</proxy>
 
Для разнообразия добавим логирование:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse" name="EchoProxyService" transports="https http" startOnLoad="true" trace="disable">
    <target>
      <inSequence>
           <log level="full"/>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
      <endpoint>
         <wsdl service="echo"
               port="echoHttpSoap11Endpoint"
               uri="http://localhost:8280/services/echo?wsdl"/>
      </endpoint>
   </target>
   <publishWSDL uri="http://localhost:8280/services/echo?wsdl"/>
</proxy>

(добавить можно и через графический редактор, но мне проще по старинке - в исходнике xml).

Deploy сервиса на сервер

Для того, что бы задеплоить созданный сервис на сервер, необходимо создать Composite Application (capp) , куда включить этот сервис:

  • DevStudio Dashboard
  • Composite Application Project
  • Project Name: EchoProxyCapp
  • Добавляем в приложение проект EchoProxy 
  • Finish

Теперь кликаем на нашем сервере правой кнокой -> "Add and Remove..." и в открышемся диалоге добавляем созданное приложение. Через несколько секунд, после того как пройдет деплой, сервис становится доступным в списке сервисов в Management Console

После внесения изменений необходимо передеплоить приложение - для этого раскрываем сервис, кликаем на наем приложении и выбираем Redeploy.

В случае простого сервиса (как например этот) конечно же проще все сделат сразу в Management Console. Однако, если мы говорим о разработке сложного интеграционного проекта, к тому же в котором принимают участие несколько человек (требуется синхронизация исходников через GIT), то тут уже без WSO2 Development Studio не обойтись.