Enterprise JavaBeans: Porovnání verzí

Z FI WIKI
Přejít na: navigace, hledání
(Přepracováno z původní přednášky pro PA165)
 
(+ organizace kapitol, další zdroje)
Řádka 1: Řádka 1:
 
'''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. Komponenty EJB mají své uplatnění zejména ve tří-(a více)-vrstvých distribuovaých aplikacích.
 
'''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. Komponenty EJB mají své uplatnění zejména ve tří-(a více)-vrstvých distribuovaých aplikacích.
  
 +
== Základní vlastnosti ==
 
Cílem je
 
Cílem je
  
Řádka 12: Řádka 13:
 
Klíčovou vlastností je interoperabilita, a to jak mezi jednotlivými kontejnery a aplikačními servery, tak i s jinými aplikacemi (prostřednictvím rozhraní protokolu [[IIOP]] – viz [[CORBA]]).
 
Klíčovou vlastností je interoperabilita, a to jak mezi jednotlivými kontejnery a aplikačními servery, tak i s jinými aplikacemi (prostřednictvím rozhraní protokolu [[IIOP]] – viz [[CORBA]]).
  
 +
== Kontejner ==
 
EJB komponenty ke své činnosti vyžadují kontejner, který
 
EJB komponenty ke své činnosti vyžadují kontejner, který
  
Řádka 52: Řádka 54:
 
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/]
 
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 ==
+
== Vhodnost použití technologie ==
 
+
=== Kdy použít EJB ===
 
* Když musí být aplikace škálovatelná
 
* Když musí být aplikace škálovatelná
 
* Když musí být podporován souběžný přístup a transakce
 
* Když musí být podporován souběžný přístup a transakce
 
* Když bude existovat více různých typů klientů
 
* Když bude existovat více různých typů klientů
  
== Kdy nepoužít EJB ==
+
=== Kdy nepoužít EJB ===
 
* Když by to byl kanón na vrabce
 
* Když by to byl kanón na vrabce
 
* Když nejsou potřeba služby a vlastnosti poskytované touto technologií
 
* 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!!!
 
* Vždy je však důležité logicky oddělit aplikační vrstvu od prezentace!!!
  
== Nevýhody EJB ==
+
=== Nevýhody EJB ===
 
* Komponenty jsou závislé na kontejneru a jeho API (byť standardizovaném). Existuje snaha vytvářet komponenty tak, aby byly zcela nezávislé na konkrétní technologii (viz. [[AOP]] nebo [[dependency injection]]).
 
* Komponenty jsou závislé na kontejneru a jeho API (byť standardizovaném). Existuje snaha vytvářet komponenty tak, aby byly zcela nezávislé na konkrétní technologii (viz. [[AOP]] nebo [[dependency injection]]).
 
* Složitost a náročnost na osvojení – v EJB 3.0 výrazně zredukováno
 
* Složitost a náročnost na osvojení – v EJB 3.0 výrazně zredukováno
Řádka 69: Řádka 71:
  
 
== Externí zdroje ==
 
== Externí zdroje ==
 +
* Rima Patel Sriganesh, Gerald Brose, Micah Silverman: Mastering Enterprise JavaBeans 3.0. Wiley 2006. ISBN 0471785415. [http://www.amazon.com/gp/product/0471785415/]. Knihu je možné zdarma stáhnout na  adrese http://www.theserverside.com/tt/books/wiley/masteringEJB3/index.tss. (Kniha se věnuje J2EE 1.4 a EJB 2.1)
 
* http://java.sun.com/javaee/5/docs/tutorial/doc/
 
* http://java.sun.com/javaee/5/docs/tutorial/doc/
 
* http://www.theserverside.com/
 
* http://www.theserverside.com/
Řádka 75: Řádka 78:
  
 
=== Design patterns, Best practices ===
 
=== Design patterns, Best practices ===
* Deepak Alur, Dan Malks, John Crupi: Core J2EE Patterns: Best Practices and Design Strategies, Second Edition. Prentice Hall PTR, 2003. ISBN 0131422464. [http://www.amazon.com/gp/product/0131422464/].  
+
* Deepak Alur, Dan Malks, John Crupi: Core J2EE Patterns: Best Practices and Design Strategies, Second Edition. Prentice Hall PTR, 2003. ISBN 0131422464. [http://www.amazon.com/gp/product/0131422464/]. Katalog vzorů je dostupný také na adrese http://java.sun.com/blueprints/corej2eepatterns/index.html.
 
* http://www.theserverside.com/books/wiley/EJBDesignPatterns/index.tss
 
* http://www.theserverside.com/books/wiley/EJBDesignPatterns/index.tss
 
* http://www-106.ibm.com/developerworks/java/library/j-ejbcol.html
 
* http://www-106.ibm.com/developerworks/java/library/j-ejbcol.html

Verze z 21. 8. 2006, 08:00

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. Komponenty EJB mají své uplatnění zejména ve tří-(a více)-vrstvých distribuovaých aplikacích.

Základní vlastnosti

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, a to jak mezi jednotlivými kontejnery a aplikačními servery, tak i s jinými aplikacemi (prostřednictvím rozhraní protokolu IIOP – viz CORBA).

Kontejner

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 (u starších verzí EJB v popisovačí nasazení neboli deployment deskriptoru, dnes se na většinu věcí používají anotace). To zjednodušuje kód komponent a zároveň umožňuje jejich chování snadno přizpůsobit požadavkům při konkrétním nasazení, aniž by bylo nutné měnit jejich kód.

Pro přístup ke službám, zdrojům a konfuguraci se používá technika nazývaná dependency injection (u starších verzí EJB k tomu sloužilo 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.

EJB komponenty

Technologie podporuje následující 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 [1]

Vhodnost použití technologie

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

  • Komponenty jsou závislé na kontejneru a jeho API (byť standardizovaném). Existuje snaha vytvářet komponenty tak, aby byly zcela nezávislé na konkrétní technologii (viz. AOP nebo dependency injection).
  • Složitost a náročnost na osvojení – v EJB 3.0 výrazně zredukováno
  • Kontejner má jistou režii (každá abstrakce něco stojí)

Externí zdroje

Design patterns, Best practices