pátek 14. ledna 2005

Re:EJB aneb jeden obsáhlý komentář

Ke spotu Kdy použít EJB?, se váže velice zajímavé řešení, které nakousnul Pavel Roušar alias Totem. S jeho laskavým svolením publikuji detailnější popis řešení, které mě zaujalo a doufám, že zaujme i vás.

Nas uKernel neni postaven na konkretni technologii, tj. napr. JMS. Jedna se o pure java kod, nezavisly na cemkoliv krome JRE. Nicmeme JMS/MQ service je poskytovana - jako kazda jina obycejna sluzba, prostrednictvim MessagingBrokeru.

O JBossim mikrojadru jsem taky slysel, myslim, ze jsi tu mel odkaz na to uvolnene html. Classloading si nicmene resime sami, ale treba JMX se snad podari protlacit jako dalsi broker, urceny pro sluzby ohledne spravy service queues a vlastniho mikrojadra.

On sam uKernel v podstate nic nedela, vsechno se odehrava v "userspace". Dokonce i prava jsou resena takto transparentne, tj. zadny zasah do kodu uKernelu a uz vubec neni nutna implementace u konzumentu (ackoliv je mozna). O vlastni strukture bych rekl asi tolik, ze kazda service, resp. service request, je (zatim pomoci konfig. xml) namapovan na queue, ke ktere patri service stack. pozadavek pak propadava v queue a na zaver je POJO vraceno konzumentovi. Snazil jsem se o abstraktni pristup, takze vse je jenom N dimenzionalni vektor zobrazeni z mnoziny produktu do mnoziny producentu.

Tento koncept mimo svou cistotu (poskytuji nejake sluzby, tak mi popis ci chces a ja ti to obstaram. nemusis se starat o implementacni detaily, neafektuj zbytecne svuj kod. jen mi to protokolem popis a uvidime...) umoznuje delat takove vychytavky (je to holt mikrojadro) jako napr. transparentni loadbalancing, cachovani, filtrovani, prava, ... treba: odesel jeden koder a potrebovali jsme jeho service broker naucit cachovat. tak jsem mu proste do patricne queue pred/zaradil caching broker a bylo hotovo... to mozna trochu zavani AOP.

Ve vlastnim holem jadru muze kazdy delat co chce (registrovat nove sluzby, odebirat je, ...). uKernel je sice cisty a jednoduchy, ale neni to ono. Proto je prvnim ServiceBrokerem v Queue zarazen "stavovy filtr", takove male iptables a ten za sebe propusti jen ty pozadavky (treba na load/unload service brokeru), ktere prichazi od duveryhodneho objektu (modul je treba podepsany). Je to ale jen jeden z dalsich brokeru.

Takovy je zakladni, myslim rozumny a jednoduchy, koncept. technologie se myslim mimoradne osvedcila pri psani jednoho extremne velikeho portalu (posta jej bude brzo zpoustet). A dalsi projekty nasleduji. Kod je potom tak strukturovany, prehledny, ze to kodovani zacina byt pekna nuda.

Pokud by jsi mel zajem a chut se na tom podilet, nebo proste jen prohodit par slov, nebo nekdo z tvych ctenaru, bylo by to fajn. Mozna by si to pozdeji zaslouzilo pozornost i od ASF.