Недавно я присоединился к новому заданию, в котором мы должны реализовать решение 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' |
и вы увидите логирование так:
Обратите внимание, что я установил уровень журнала DEBUG для пакета «org.apache.synapse», изменив «log4j.properties», который можно найти в каталоге «$ CARBON_HOME / repository / conf /». Первые примеры в основном основаны на проксировании или перенаправлении на существующие сервисы. Эти услуги основаны на Axis2, а также поставляются с установкой WSO2 ESB. Чтобы запустить сервер Axis2, откройте новое окно терминала, перейдите в каталог «$ CARBON_HOME / samples / axis2Server» и выполните команду «./axis2server.sh». Это запускает SimpleAxisServer, как видно из консоли в журнале:
Если вы откроете браузер и перейдете к 'http://localhost:9000/services'
вы увидите, что в настоящее время у нас нет запущенной службы
Чтобы развернуть службу, например SimpleStockQuoteService, откройте новый терминал и перейдите в следующий каталог: $ CARBON + HOME / samples / axis2Server / src / SimpleStockQuoteService. Здесь просто введите команду ‘ant’, и сервис будет скомпилирован, собран и развернут на сервере Axis2Server, который мы запускали ранее:
Теперь, если мы посмотрим на 'http://localhost:9000/services'
мы увидим, что SimpleStockService доступен для запросов:
Если вы хотите, вы можете протестировать сервис с SoapUI:
Итак, теперь у нас есть готовая серверная часть для первых примеров. Давайте запустим клиент. Каждый образец имеет документацию, в которой говорится, как запустить клиент Axis2. Для образца 1 документация показывает это:
Откройте новый терминал, перейдите в следующий каталог /Users/pascal/develop/wso2esb-4.5.1/samples/axis2Client и предоставьте указанную команду для запуска клиента:
Как видите, мы получили котировку на акции 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 .