Enterprise JavaBeans
EJB (Enterprise JavaBeans) je standardní komponentní architektura,
sloužící pro
realizaci aplikační vsrstvy informačního systému.
EJB komponenty jsou objekty implementované vývojářem, které
zajišťují
vlastní aplikační (Business) logiku systému.
Cílem je
- poskytnout robustní infrastrukturu pro vývoj rozsáhlých
informačních systémů;
- umožnit vývojáři se soustředit výhradně na problémovou doménu;
- umožňit tvorbu znovupoužitelných komponent s využitím různých
nástrojů od různých dodavatelů a budování aplikací kombinováním takto
vytvořených kompenent;
- usnadnit distribuci a nasazování aplikací.
Většina standardních služeb (autentizace, autorizace,
distribuovanost, transakce, persistence, řízení přístupu ke zdrojům,
apod.) jsou zajišťovány kontejnerem a jejich konfigurace probíhá
deklarativním způsobem.
Klíčovou vlastností je interoperabilita - jak mezi jednotlivými
kontejnery a aplikačními servery, tak i s jinými aplikacemi
(prostřednictvím rozhraní CORBA).
Architektura EJB Aplikací
EJB mají své uplatnění ve tří-(a více)-vrstvých distribuovaých
aplikacích.
EJB komponenty ke své činnosti vyžadují kontejner, který
- řídí jejich životní cyklus
- zajišťuje autentizaci a autorizaci (JAAS)
- umožňuje distribuci komponent (RMI-IIOP)
- řídí transakce (JTA)
- může zajišťovat perzistenci
- poskytuje přístup ke zdrojům (např. JDBC, JCX, apod.)
- poskytuje další služby (JMS, JavaMail, JAF, JAXP)
Nastavení atributů různých služeb (transakce, bezpečnost, přístup ke
zdrojům apod.) je důsledně odděleno od kódu komponent a řeší se
deklarativním způsobem v Popisovačí nasazení (deployment deskriptoru).
To umožňuje komponenty snadno přizpůsobit požadavkům při konkrétním
nasazení, aniž by bylo nutné měnit kód komponenty.
Pro přístup ke službám, zdrojům a konfuguraci se používá JNDI.
Mezi nejrozšířenější volně dostupné aplikační servery s EJB
kontejnerem patří např. JBoss, Sun
Java System Application Server Platform Edition 8 dodávaný s J2EE 1.4 SDK od
firmy SUN Microsystems, nebo prozatím vyvíjený Geronimo od Apache
Software Foundation.
Typy EJB komponent
- Entity EJB
- Stateless Session EJB
- Stateful Session EJB
- Message-Driven EJB
Role při vývoji EJB aplikací
- Vývojář komponenty
- Sestavitel aplikace
- Odborník na nasazení
- Dodavatel EJB kontejneru
- Dodavatel EJB serveru
- Administrátor
Tvorba EJB komponent
http://java.sun.com/j2ee/1.4/docs/tutorial/doc/EJB.html
Distribuce a nasazení EJB komponent
Komponenty se spolu s popisovači nasazení zabalí do tzv. modulů,
které je možné nasadit v prostředí libovolného kontejneru, splňujícím
specifikaci EJB. Při nasazení je ovšem nutné aplikaci nakonfigurovat,
což se děje prostřednictvím úprav popisovačů nasazení. Většina
kontejnerů poskytuje nástroje pro zjednodušení tohoto procesu. Kromě
standardizovaných popisovačů nasazení existují ještě popisovače
nasazení specifické pro konkrétní kontejner, prostřednictvím něhož se
nastavují parametry aplikace specifické pro daný kontejner.
Pro distribuci klientských GUI aplikací prostřednictvím internetu
lze s úspěchem využít technologii Java Web Start http://java.sun.com/products/javawebstart/
Kdy použít EJB
- Když musí být aplikace škálovatelná
- Když musí být podporován souběžný přístup a transakce
- Když bude existovat více různých typů klientů
Kdy nepoužít EJB
- Když by to byl kanón na vrabce
- Když nejsou potřeba služby a vlastnosti poskytované touto
technologií
- Vždy je
však důležité logicky oddělit aplikační vrstvu od prezentace!!!
Nevýhody EJB
- Složitost a náročnost na osvojení - v EJB 3.0 (bude součástí J2EE
1.5) je kladen důraz právě na zjednodušení vývoje.
- Nutnost tvorby několika rozhraní, tříd a deployment descriptoru -
řešením jsou vývojové nástroje, XDoclet nebo Anotace (J2SE 1.5).
- Kontejner má jistou režii (každá abstrakce něco stojí)
Doporučené postupy
http://www.theserverside.com/books/wiley/EJBDesignPatterns/index.tss
http://www-106.ibm.com/developerworks/java/library/j-ejbcol.html
http://www.oracle.com/technology/sample_code/tech/java/codesnippet/j2ee/ejbbestpractices/EJB-Best.html
Zdroje informací
http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html
http://www.theserverside.com/
http://www.jboss.org
Zelený, J., Nožička, J.: COM+, CORBA, EJB. Technická literatura BEN,
Praha, 2002.