27. února 2012

Vývoj JCA resource adapteru pro HttpClienta

V poslední době jsem vyvíjel JCA resource adapter a vzhledem k tomu, že není zrovna moc dostupných informací a hlavně zkušeností k dohledání, tak bych rád přidal pár zajímavých odkazů a informací.

Úkol k řešení byl celkem zajímavý - výsledná aplikace běží na Webpshere serveru, kde jsou nastaveny všechny možné pooly a vše je takto řízeno z jednoho místa (to se moc libí administrátorům). Až na jednu věc a tou jsou HTTP spojení spravované knihovnou HttpClient. Ta má vlastní implementaci ThreadSafeClientConnManager a konfiguraci na nastavení connection poolu. Cílem tedy bylo vytvořit resource adapter, který bude instalován a spravován serverem. Ve výsledné podobě vznikla vlastní implementace rozhraní ClientConnectionManager, která komunikovala s resource adaptérem přes JNDI, který spravoval a poskytoval HTTP připojení z pooleru na serveru.

Jak na to? Nejdříve uvedu odkazy na vybrané články o resource adapterech:
Představa, že budu vyvíjet resource adapter oproti ostrému serveru mě na začátku hodně frustrovala, naštěstí existují zajímavé projekty ShrinkWrap a IronJacamar, díky kterým je možné vše testovat pomocí jUnit testů. Zejména projekt IronJacamar je pro vývoj resource adapterů skoro nezbytný - součástí projektu je i command line code generator, pomocí kterého je možné si v interaktivním průvodci navolit základní parametry resource adapteru a následně vygenerovat kostru Java tříd včetně XML konfigurace a testů. Pro úplný začátek úplně super - já jsem nějaký čas s JCA bojoval sám (dokonce jsem začal číst i specifikaci JCA jak jsem byl na tom špatně :) ) a tento nástroj mi hodně pomohl.

Nakonec ještě přikládám dva UML diagramy, které lépe vystihují výslednou implementaci:

Resource adapter architektura


HttpClient architektura