JBI

Z FI WIKI
Přejít na: navigace, hledání
Tato stránka obsahuje neaktuální informace a měla by být aktualizována. Berte ji proto prosím s rezervou!

JBI (Java Business Integration)

Co je JBI

Java Bussines Integration je specifikace definovaná v rámci Java Community Process jako standard pro integraci servisně-orientovaných systémů. Specifikace JBI 1.0 (JSR 208) byla přijata v roce 2005, v roce 2007 byl zahájen vývoj specifikace JBI 2.0 (JSR 312).

JBI definuje integrační kontejner - prostředníka, který umožňuje komunikaci navzájem nekompatibilním SOA systémům. JBI vzniklo jako reakce na výrazný nárůst systémů postavených na architektuře SOA, které potřebují navzájem interagovat, příčemž tato interakce je kvůli absenci podobné specifikace často řešena nestandardními způsoby.

Pro popis služeb i komunikačních modelů je využíván jazyk WSDL.

Stručný popis funkcionality JBI kontejneru:

  • komunikační infrastruktura (tzv. Normalized Message Router, NMR)
    • směrování zpráv v rámci JBI kontejneru
    • spolehlivé doručování zpráv v rámci JBI kontejneru
  • prostředí pro běh a správu JBI komponent
    • vytvoření běhového prostředí pro JBI komponenty
    • zajištění životního cyklu komponent (deploy, start, stop, shutdown, undeploy)

Komponenty

JBI kontejner sám o sobě poskytuje pouze výše uvedenou funcionalitu. K praktickému použití je nezbytně nutné rozšíření kontejneru o tzv. JBI komponenty. Ty mohou být dvou typů: Binding Components a Service Engines.

  • Binding Components (BC)
BC umožňují komunikaci JBI kontejneru s vnějším prostředím. Jde o konvertory zpráv z formátu vlastního JBI kontejneru (tzv. NormalizedMessage, ve specifikaci kapitola 5.5.1.1) do formátu vlastního vnější službě/systému (a případně také zpět). Různé SOA systémy spolu pak mohou bezešvě komunikovat, jelikož příslušné BC zkonvertují příchozí zprávy do standardizovaného formátu a odchozí naopak do formátu specifického pro příjemce.
K rozšířeným implementacím JBI existují řádově až desítky BC (samozřejmě v různých stádiích vývoje). Typické jsou například BC pro JMS, filesystem (umožňující ze zpráv generovat soubory na disk nebo naopak vyzvedávat soubory z určeného adresáře) nebo HTTP (umožňující komunikaci jak čistým HTTP, tak i "SOAP over HTTP"). Pokud systémy, které mají být integrovány, používají některý z běžných protokolů, je velká šance, že příslušná BC už exituje. V opačném případě je nutné naimplementovat BC vlastní.
Minimální "povinnou výbavou", kterou vyžaduje specifikace, je jedna BC implementující WS-I Basic Profile 1.1
  • Service Engines (SE)
SE slouží ke zpracování zpráv v rámci JBI. Na rozdíl od BC je tedy jejich vstupem i výstupem NormalizedMessage. Stejně jako v případě BC existuje k rozšířeným implementacím JBI celá řada předpřipravených SE. Typickým příkladem je XSLT transformace zprávy, ale existují také například SE využívající POJO, BPEL, ETL aj.

JBI komponenty mají standardizované vnější rozhraní i distribuční formát (jar nebo zip obsahující popisovač META-INF/jbi.xml). V principu by tedy mohly být jak BC, tak i SE přenositelné mezi jednotlivými JBI kontejnery. Specifikace JBI to ale nevyžaduje a proto v praxi záleží pouze na tom, jestli byla konkrétní BC nebo SE s tímto záměrem vyvíjena. Pokud má nějaké vazby na konkrétní JBI kontejner, tak přenositelná není.

Service Units

Service Units (SU) jsou základním stavebním blokem pro vývojáře systémů, využívajících JBI. Každá Service Unit (SU) konfiguruje činnost jedné konkrétní JBI komponenty (například říká XSLT-Service-Engine, že má v rámci kontejneru nastartovat službu "MyTransformationService" se dvěma endpointy "Endpoint1" a "Endpoint2", přičemž každému zadá pro jeho činnost konkrétní XSLT transformaci nebo XQuery dotaz).

Teprve deploynutí SU do JBI kontejneru aktivuje příslušnou BC nebo SE (například HTTP-BC nastartuje HTTP server a zpřístupní ho na zadaném portu). Samy o sobě (bez SU) komponenty nic nevykonávají. Pro jednu JBI komponentu může být v kontejneru samozřejmě deploynuto více SU.

SU mají standardizovaný distribuční formát (opět jar nebo zip obsahující popisovač META-INF/jbi.xml, analogie k *.war). Způsob konfigurace JBI komponent ale specifikace neřeší, takže SU nejsou přenositelné - jsou pevně svázány s příslušnou JBI komponentou (např. SU napsaná pro HTTP-BC v OpenESB nebude fungovat s HTTP-BC v ServiceMix). Pro vývoj SU je proto zcela klíčová dokumentace příslušné komponenty.

Service Assemblies

Service Assemblies (SA) představují kompletní aplikaci (= sadu SU) pro deploynutí do JBI kontejneru. Distribuční formát je jar nebo zip obsahující jednotlivé SU a popisovač META-INF/jbi.xml (analogie k *.ear). Každá SA musí obsahovat alespoň jednu SU.

Normalized Message

Interní formát zpráv pro komunikaci v rámci NMR:

  • content (payload)
    • musí být v XML
    • pro zprávy od/pro komponenty, jejichž rozhraní je definováno pomocí WSDL (typicky SOAP v HTTP BC) definuje JBI specifikace v kapitole 5.5.1.1.4 wrapper obalující zprávy, jejichž formát je popsaný pomocí WSDL, do Normalized Messages
  • properties (metadata)
    • dvojice name(String) - value(Object)
    • využití například pro autentizaci, transakce apod.
  • attachments (přílohy)
    • dvojice id(String) - content(JAF DataHandler)
    • využití typicky pro binární data
    • id by mělo být odkazováno z těla zprávy (konkrétní způsoby viz kapitola 5.5.1.1.2 JBI specifikace)

Co není JBI

JBI bývá často považováno za Enterprise Service Bus (ESB), to ovšem není pravda. JBI definuje pouze integrační kontejner v rámci ESB systému. Na rozdíl od ESB ovšem nespecifikuje:

  • distributivitu komunikačního prostředí (více kontejnerů na více strojích dohromady tvořících jeden logický systém)
  • centralizovanou administraci více kontejnerů
  • spolehlivé komunikační prostředí mezi kontejnery

Zjednodušeně se tedy dá říci, že JBI je (alespoň v aktuální verzi 1.0) implementací konceptu ESB v rámci jediné VM.

Implementace

  • Open ESB - Sunovská implementace ESB s integrovanou podporou JBI, licence CDDL
  • ServiceMix - Implementace od Apache, Apache License 2.0
  • PEtALS - Implementace od ObjectWeb, licence LGPL

Související projekty

Zdroje