Статьи

Начиная с WSO2 ESB, запустив образцы

Недавно я присоединился к новому заданию, в котором мы должны реализовать решение ESB на основе стека инструментов WSO2 . Хотя я знаком с большинством концепций ESB и некоторыми другими реализациями (например, Mule ESB ), мне впервые придется работать с WSO2 ESB . К счастью, есть много документации, чтобы найти, и инструмент поставляется с большим количеством примеров, как использовать ESB. В этом посте я покажу шаги, которые я предпринял, чтобы первые примеры работали. Для более подробного объяснения смотрите информацию здесь .

Первым шагом является загрузка и установка ESB, что действительно легко. Вы можете скачать почтовый индекс здесь . После загрузки просто распакуйте его в место, где вы хотите установить инструмент. Я установил его в каталоге

«Пользователи / паскаль / разработки / wso2esb-4.5.1 ?. После распаковки вы увидите файл INSTALL.txt в разархивированной папке. В этом файле указана вся информация о том, как запускать и останавливать ESB. Для работы с примерами вам нужно запустить ESB с помощью команды:

1
./wso2esb-samples.sh -sn ${sample-number}

где ‘$ {sample-number}’ — номер образца, который вы хотите запустить. Итак, чтобы запустить ESB с примером 1, просто запустите ESB с помощью команды:

1
'./wso2esb-samples.sh -sn 1'

и вы увидите логирование так:

Снимок экрана 2013-03-02 в 15.29.50

Обратите внимание, что я установил уровень журнала DEBUG для пакета «org.apache.synapse», изменив «log4j.properties», который можно найти в каталоге «$ CARBON_HOME / repository / conf /». Первые примеры в основном основаны на проксировании или перенаправлении на существующие сервисы. Эти услуги основаны на Axis2, а также поставляются с установкой WSO2 ESB. Чтобы запустить сервер Axis2, откройте новое окно терминала, перейдите в каталог «$ CARBON_HOME / samples / axis2Server» и выполните команду «./axis2server.sh». Это запускает SimpleAxisServer, как видно из консоли в журнале:

Снимок экрана 2013-03-03 в 16.16.29

Если вы откроете браузер и перейдете к 'http://localhost:9000/services' вы увидите, что в настоящее время у нас нет запущенной службы

Снимок экрана 2013-03-03 в 16.19.12

Чтобы развернуть службу, например SimpleStockQuoteService, откройте новый терминал и перейдите в следующий каталог: $ CARBON + HOME / samples / axis2Server / src / SimpleStockQuoteService. Здесь просто введите команду ‘ant’, и сервис будет скомпилирован, собран и развернут на сервере Axis2Server, который мы запускали ранее:

Снимок экрана 2013-03-03 в 16.25.17

Теперь, если мы посмотрим на 'http://localhost:9000/services' мы увидим, что SimpleStockService доступен для запросов:

Снимок экрана 2013-03-03 в 16.28.00

Если вы хотите, вы можете протестировать сервис с SoapUI:

Снимок экрана 2013-03-03 в 16.36.25

Итак, теперь у нас есть готовая серверная часть для первых примеров. Давайте запустим клиент. Каждый образец имеет документацию, в которой говорится, как запустить клиент Axis2. Для образца 1 документация показывает это:

Снимок экрана 2013-03-03 в 16.45.12

Откройте новый терминал, перейдите в следующий каталог /Users/pascal/develop/wso2esb-4.5.1/samples/axis2Client и предоставьте указанную команду для запуска клиента:

Снимок экрана 2013-03-03 в 16.55.44

Как видите, мы получили котировку на акции IBM. В терминале, на котором работает ESB WSO2, мы видим следующую запись в журнал, вызванную входящим запросом:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
[2013-03-03 16:58:03,113] DEBUG - SynapseMessageReceiver Synapse received a new message for message mediation...
[2013-03-03 16:58:03,114] DEBUG - SynapseMessageReceiver Received To: /services/StockQuote
[2013-03-03 16:58:03,114] DEBUG - SynapseMessageReceiver SOAPAction: urn:getQuote
[2013-03-03 16:58:03,114] DEBUG - SynapseMessageReceiver WSA-Action: urn:getQuote
[2013-03-03 16:58:03,114] DEBUG - Axis2SynapseEnvironment Injecting MessageContext
[2013-03-03 16:58:03,115] DEBUG - Axis2SynapseEnvironment Using Main Sequence for injected message
[2013-03-03 16:58:03,115] DEBUG - SequenceMediator Start : Sequence <main>
[2013-03-03 16:58:03,115] DEBUG - SequenceMediator Sequence <SequenceMediator> :: mediate()
[2013-03-03 16:58:03,115] DEBUG - InMediator Start : In mediator
[2013-03-03 16:58:03,115] DEBUG - InMediator Current message is incoming - executing child mediators
[2013-03-03 16:58:03,115] DEBUG - InMediator Sequence <InMediator> :: mediate()
[2013-03-03 16:58:03,115] DEBUG - FilterMediator Start : Filter mediator
[2013-03-03 16:58:03,116] DEBUG - FilterMediator Source : get-property('To') against : .*/StockQuote.* matches - executing child mediators
[2013-03-03 16:58:03,116] DEBUG - FilterMediator Sequence <FilterMediator> :: mediate()
[2013-03-03 16:58:03,116] DEBUG - SendMediator Start : Send mediator
[2013-03-03 16:58:03,116] DEBUG - EndpointContext Checking if endpoint : endpoint_d06dafda969c8e11992a8e8f5366fd33203399eaae89984c currently at state ACTIVE can be used now?
[2013-03-03 16:58:03,116] DEBUG - AddressEndpoint Sending message through endpoint : endpoint_d06dafda969c8e11992a8e8f5366fd33203399eaae89984c resolving to address = http://localhost:9000/services/SimpleStockQuoteService
[2013-03-03 16:58:03,116] DEBUG - AddressEndpoint SOAPAction: urn:getQuote
[2013-03-03 16:58:03,116] DEBUG - AddressEndpoint WSA-Action: urn:getQuote
[2013-03-03 16:58:03,117] DEBUG - Axis2FlexibleMEPClient Sending [add = false] [sec = false] [rm = false] [mtom = false] [swa = false] [format = null] [force soap11=false] [force soap12=false] [pox=false] [get=false] [encoding=null] [to=http://localhost:9000/services/SimpleStockQuoteService]
[2013-03-03 16:58:03,117] DEBUG - Axis2FlexibleMEPClient Message [Original Request Message ID : urn:uuid:381071f8-c6ca-4e14-bfe4-0e53de7f7cc2] [New Cloned Request Message ID : urn:uuid:503aabca-2a04-413f-ba44-b6c623bf9db6]
[2013-03-03 16:58:03,117] DEBUG - SynapseCallbackReceiver Callback added. Total callbacks waiting for : 1
[2013-03-03 16:58:03,119] DEBUG - SendMediator End : Send mediator
[2013-03-03 16:58:03,120] DEBUG - DropMediator Start : Drop mediator
[2013-03-03 16:58:03,120] DEBUG - DropMediator End : Drop mediator
[2013-03-03 16:58:03,120] DEBUG - FilterMediator End : Filter mediator
[2013-03-03 16:58:03,120] DEBUG - InMediator End : In mediator
[2013-03-03 16:58:03,120] DEBUG - SequenceMediator End : Sequence <main>
[2013-03-03 16:58:03,130] DEBUG - SynapseCallbackReceiver Callback removed for request message id : urn:uuid:503aabca-2a04-413f-ba44-b6c623bf9db6. Pending callbacks count : 0
[2013-03-03 16:58:03,132] DEBUG - SynapseCallbackReceiver Synapse received an asynchronous response message
[2013-03-03 16:58:03,133] DEBUG - SynapseCallbackReceiver Received To: null
[2013-03-03 16:58:03,133] DEBUG - SynapseCallbackReceiver SOAPAction:
[2013-03-03 16:58:03,133] DEBUG - SynapseCallbackReceiver WSA-Action:
[2013-03-03 16:58:03,134] DEBUG - SynapseCallbackReceiver Body :
<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'><soapenv:Body><ns:getQuoteResponse xmlns:ns='http://services.samples'><ns:return xmlns:ax21='http://services.samples/xsd' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:type='ax21:GetQuoteResponse'><ax21:change>4.155006565416989</ax21:change><ax21:earnings>-8.118428276798063</ax21:earnings><ax21:high>84.31871512134151</ax21:high><ax21:last>80.49639852693167</ax21:last><ax21:lastTradeTimestamp>Sun Mar 03 16:58:03 CET 2013</ax21:lastTradeTimestamp><ax21:low>-79.94179251359746</ax21:low><ax21:marketCap>-6855110.427635921</ax21:marketCap><ax21:name>IBM Company</ax21:name><ax21:open>83.68193468970854</ax21:open><ax21:peRatio>23.68015151185118</ax21:peRatio><ax21:percentageChange>-5.440098733913549</ax21:percentageChange><ax21:prevClose>-76.37741093768571</ax21:prevClose><ax21:symbol>IBM</ax21:symbol><ax21:volume>16034</ax21:volume></ns:return></ns:getQuoteResponse></soapenv:Body></soapenv:Envelope>
[2013-03-03 16:58:03,134] DEBUG - Axis2SynapseEnvironment Injecting MessageContext
[2013-03-03 16:58:03,135] DEBUG - Axis2SynapseEnvironment Using Main Sequence for injected message
[2013-03-03 16:58:03,135] DEBUG - SequenceMediator Start : Sequence <main>
[2013-03-03 16:58:03,135] DEBUG - SequenceMediator Sequence <SequenceMediator> :: mediate()
[2013-03-03 16:58:03,135] DEBUG - InMediator Start : In mediator
[2013-03-03 16:58:03,135] DEBUG - InMediator Current message is a response - skipping child mediators
[2013-03-03 16:58:03,135] DEBUG - InMediator End : In mediator
[2013-03-03 16:58:03,135] DEBUG - OutMediator Start : Out mediator
[2013-03-03 16:58:03,136] DEBUG - OutMediator Current message is outgoing - executing child mediators
[2013-03-03 16:58:03,136] DEBUG - OutMediator Sequence <OutMediator> :: mediate()
[2013-03-03 16:58:03,136] DEBUG - SendMediator Start : Send mediator
[2013-03-03 16:58:03,136] DEBUG - SendMediator Sending response message using implicit message properties..
Sending To: http://www.w3.org/2005/08/addressing/anonymous
SOAPAction:
[2013-03-03 16:58:03,138] DEBUG - SendMediator End : Send mediator
[2013-03-03 16:58:03,138] DEBUG - OutMediator End : Out mediator
[2013-03-03 16:58:03,138] DEBUG - SequenceMediator End : Sequence <main>

И, наконец, в терминале Axis2Server мы видим следующую строку, добавленную в логирование из-за запроса, который передается на порт 9000 с помощью примера потока:

1
Sun Mar 03 16:58:03 CET 2013 samples.services.SimpleStockQuoteService :: Generating quote for : IBM

Это показывает, что образец работает правильно и все ожидаемые действия выполняются. Следующим шагом будет изучение всех других примеров, чтобы лучше понять возможности ESB WSO2.

Ссылка: Начиная с WSO2 ESB, запустив образцы от нашего партнера JCG Паскаля Альмы в блоге Pragmatic Integrator .