3. Cele Przedstawienie projekt坦w. Architektura rozwizania. Implementacja scenariusza integracyjnego w oparciu o wymienione narzdzia. Open Source integration tools
4. Role projekt坦w ServiceMix implementacja JBI Karaf rodowisko uruchomieniowe ActiveMQ implementacja JMS CXF Web Services stack Camel mediator, router Open Source integration tools
11. Literatura Camel in Action ActiveMQ in Action OSGi in Action Wszystkie pozycje s dostpne w cenie okoo 30 z w programie Early Access wydawnictwa Manning. Open Source integration tools
Editor's Notes
Zanim zaczniemy prac par s坦w na temat rzeczy kt坦re podczas tej prezentacji bd u甜ywane. OSGi (Open Service Gateway) nie jest nowoci. W maju tego roku minie 10 lat od wydania pierwszej wersji specyfikacji. Najwie甜sza wersja OSGi to 4.1 wydana w 2007roku. W zeszym roku pojawi si draft wersji 4.2 kt坦ra jest ukonem w stron enterprise. ServiceMix nie jest a甜 tak stary jak OSGi nie mniej swoje lata ju甜 ma. Wersja 3.1 w 2007 roku wysza z inkubatora i staa si projektem fundacji Apache. Wersja 4.0 zostaa wydana w marcu 2009. Karaf jest podprojektem Apache Felix. Pierwotnie bya to cz ServiceMix 4 jednak zostaa ona przeniesiona do projektu bli甜szego OSGi. ActiveMQ jest implementacj specyfikacji JMS w wersji 1.0 oraz 1.1, wersja 4.0 zostaa wydana w roku 2006 obecnie trwaj prace nad ActiveMQ 6.0. CXF jest poczeniem kilku projekt坦w, midzy innymi XFire, CXF z inkubatora wyszo w 2008. Obecnie zesp坦 CXF dostarcza r坦wnie甜 referencyjn implementacj distributed OSGi. Camel pocztkowo by podprojektem ActiveMQ jednak ze wzgldu na du甜a dynamik jak i coraz wiksz objto sta zosta samodzielnym projektem. Ostatnia wersja projektu ukazaa si na pocztku tego roku. Blueprint jest pojciem wie甜ym i cile si wi甜e z popularyzacj OSGi w wiecie aplikacji klasy enterprise. Jest to tak naprawd rozwinicie idei Dependency Injection w wiecie OSGi. Nieoceniony jest tutaj wkad tw坦rc坦w Spring-DM.
Celem tej prezentacji jest opr坦cz suchego, teoretycznego opisu projekt坦w przedstawienie architektury proponowanego rozwizania a tak甜e opis przykadowej implementacji.
Ka甜dy z projekt坦w kt坦ry zosta wymieniony w agendzie ma swoj rol. W przypadku realizowanego scenariusza rola ServiceMix-a jest nieco zmarginalizowana. Nie jest on wykorzystywany jako implementacja JBI a dostawca artefakt坦w OSGi kt坦re s potrzebne do uruchomienia projekt坦w. Dziki ActiveMQ bdziemy symulowa komunikacj z zewntrznym systemem. CXF posu甜y do uruchomienia przykadowego web service. Najwiksza ilo kodu bdzie powizana z Camelem, kt坦ry bdzie u甜ywany nie tylko do routingu komunikat坦w ale tak甜e do uruchamiania usug.
Powy甜szy rysunek przedstawia architektur opart o JBI o kt坦r by opart ServiceMix 3. W ServiceMix 4 podzia na powy甜sze komponenty zosta zachowany, z tym 甜e element JBI Messaging Infrastructure zosta w caoci zastpiony przez projekt ServiceMix NMR czyli Normalized Message Router kt坦ry jest mniej sformalizowany ni甜 message bus w JBI. Midzy innymi nie wymaga u甜ywania przestrzeni nazw do nazywania usug.
Na tym rysunku wida dodatkowy element JBI System Management w ServiceMix 4 obszar ten zosta wydelegowany do Karafa.
Powy甜szy rysunek przedstawia najwa甜niejsze obszary dla Karafa, wok坦 kt坦rych projekt jest skupiony. Cz usug takich jak logowanie pochodzi z projektu OPS4J, a takie jak blueprint cile wi甜 si z Apache Geronimo. Jako framework OSGi mo甜e by u甜ywany zar坦wno Felix jak i Equinox (licencja EPL jest kompatybilna z ASF 2.0).
Architektura ActiveMQ jest bardziej zwarta ni甜 pozostaych projekt坦w poniewa甜 jest to "tylko" broker JMS. Oczywicie oferuje on mo甜liwo poczenia si poprzez protokoy inne ni甜 binarny jakkolwiek co by nie m坦wi g坦wnym zadaniem ActiveMQ jest obsuga JMS. Rzeczy takie jak STOMP, HTTP s przydatne przy pr坦bie poczenia z klientami innymi ni甜 pisane w Javie. Architektur CXF pominiemy poniewa甜 nie bdzie ona istotna w naszym dzisiejszym scenariuszu.
Za to kluczow rol w naszym zadaniu bdzie odgrywa Camel std nad nim zatrzymamy si na du甜ej. Na rysunki widzimy kilka komponent坦w JMS, HTTP oraz File czyli te najprostsze. Po prawej znajduj si procesory kt坦re wzbogacaj funkcjonalno Camela. Komponenty w Camelu peni rol binding component坦w z ServiceMixa podczas gdy procesory mo甜na by okreli czym w rodzaju service engine operuj one na przesanych komunikatach, jakkolwiek mog r坦wnie甜 je rozdziela, scala, wzbogaca, przycina i tak dalej.
Komponent tworzy endpoint. Endpoint tworzy instancj Consumera, Producera oraz Exchange, kt坦ry z kolei tworzy Message.