Enterprise JavaBeans: Porovnání verzí

Z FI WIKI
Přejít na: navigace, hledání
m (jedná se o součást platformy Java EE.)
 
(Není zobrazeno 13 mezilehlých verzí od 6 dalších uživatelů.)
Řá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, jedná se o součást platformy [[Java EE]].
+
{{OtherLanguagesEN|en=Enterprise JavaBeans (English)}}
 +
 
 +
'''EJB''' ('''Enterprise JavaBeans''') je standardní komponentní architektura, sloužící pro realizaci aplikační vrstvy 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 distribuovaných aplikacích, jedná se o součást platformy [[Java EE]].
  
 
== Základní vlastnosti ==
 
== Základní vlastnosti ==
Řádka 9: Řádka 11:
 
* usnadnit distribuci a nasazování aplikací.
 
* 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í přístup|deklarativním způsobem]].
+
Většina standardních služeb (autentizace, autorizace, distribuovanost, transakce, persistence, řízení přístupu ke zdrojům, apod.) jsou zajišťovány [[container|kontejnerem]] a jejich konfigurace probíhá [[deklarativní přístup|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]]).
 
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]]).
  
Aktuální verzí specifikace EJB je 3.0, která proti starším verzím (2.1, 2.0, 1.0) přináší výrazné zjednodušení vývoje. Toho je dosaženo zejména přechodem od komponent typy [[Entity EJB]] k pojo entitám, nahrazením většiny [[popisovač nasazení|deployment deskriptorů]] pomocí [[anotace|anotací]] a uplatněním techniky [[dependency injection]].
+
Technologie EJB byla ve starších verzích (1.0, 2.0, 2.1) silná, ale poměrně těžkopádná a složitá na používání. K výrazné změně došlo ve verzi 3.0, která přinesla výrazné zjednodušení vývoje. Toho je dosaženo zejména přechodem od komponent typy [[Entity EJB]] k [[POJO]] entitám, nahrazením většiny [[popisovač nasazení|deployment deskriptorů]] pomocí [[anotace|anotací]] a principu [[coc| convention over configuration]]( aneb také zde: http://en.wikipedia.org/wiki/Convention_over_configuration) a uplatněním techniky [[dependency injection]].
 +
 
 +
Aktuální verzí specifikace EJB je 3.1, která přináší řadu dalších užitečných vlastností (Singleton, Embeddable API, Automaticky vytvářené časovače, cron-like časovače, Asynchronní volání metod u Session EJB, EJB 3.1 lite, EJB komponenty bez lokálního rozhraní, apod). Hlavní důraz je kladen na odlehčení EJB kontejneru a zavést možnost provozu EJB aplikací bez složitého a komplikovaného aplikačního serveru.
  
 
== Kontejner ==
 
== Kontejner ==
 
EJB komponenty ke své činnosti vyžadují kontejner, který
 
EJB komponenty ke své činnosti vyžadují kontejner, který
  
* řídí jejich životní cyklus
+
* řídí jejich životní cyklus,
* zajišťuje autentizaci a autorizaci ([[JAAS]])
+
* zajišťuje autentizaci a autorizaci ([[JAAS]]),
* umožňuje distribuci komponent (RMI-IIOP)
+
* umožňuje distribuci komponent (RMI-IIOP),
* řídí transakce ([[JTA]])
+
* řídí transakce ([[JTA]]),
* může zajišťovat perzistenci
+
* může zajišťovat perzistenci,
* poskytuje přístup ke zdrojům (např. [[JDBC]], [[JCX]], apod.)
+
* poskytuje přístup ke zdrojům (např. [[JDBC]], [[JCX]], apod.) a
* poskytuje další služby ([[JMS]], [[JavaMail]], [[JAF]], [[JAXP]])
+
* 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í|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.
+
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í|popisovači 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]].
+
Pro přístup ke službám, zdrojům a konfiguraci 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.
 
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.
Řádka 35: Řádka 39:
 
Technologie podporuje následující typy EJB komponent:
 
Technologie podporuje následující typy EJB komponent:
  
* Entity EJB (tyto komponenty jsou přítomny kvůli zpětné kompatibilitě, nahrazuje je technologie [[Java persistence]], která je oddělená od specifikace EJB);
+
* Entity EJB (tyto komponenty jsou přítomny kvůli zpětné kompatibilitě, nahrazuje je technologie [[Java Persistence API]], která je oddělená od specifikace EJB);
 
* Stateless Session EJB;
 
* Stateless Session EJB;
 
* Stateful Session EJB;
 
* Stateful Session EJB;
 
* Message-Driven EJB;
 
* Message-Driven EJB;
 +
* Singleton EJB (od EJB 3.1)
  
 
=== Role při vývoji EJB aplikací ===
 
=== Role při vývoji EJB aplikací ===
Řádka 49: Řádka 54:
  
 
=== Tvorba EJB komponent ===
 
=== Tvorba EJB komponent ===
http://java.sun.com/javaee/5/docs/tutorial/doc/EJB.html
+
http://java.sun.com/javaee/5/docs/tutorial/doc/bnbnb.html
  
 
=== Distribuce a nasazení EJB komponent ===
 
=== 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.
+
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ě [[deployment descriptor|popisovače nasazení]] specifické pro konkrétní [[container|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/]
 
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/]
Řádka 90: Řádka 95:
  
 
[[Kategorie:Java]]
 
[[Kategorie:Java]]
 +
[[Kategorie:Java EE]]
 +
[[Kategorie:PA165]]

Aktuální verze z 8. 5. 2013, 11:44

This page is also available in English: Enterprise JavaBeans (English)

EJB (Enterprise JavaBeans) je standardní komponentní architektura, sloužící pro realizaci aplikační vrstvy 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 distribuovaných aplikacích, jedná se o součást platformy Java EE.

Základní vlastnosti

Cílem je

  • poskytnout robustní infrastrukturu pro vývoj rozsáhlých škálovatelný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).

Technologie EJB byla ve starších verzích (1.0, 2.0, 2.1) silná, ale poměrně těžkopádná a složitá na používání. K výrazné změně došlo ve verzi 3.0, která přinesla výrazné zjednodušení vývoje. Toho je dosaženo zejména přechodem od komponent typy Entity EJB k POJO entitám, nahrazením většiny deployment deskriptorů pomocí anotací a principu convention over configuration( aneb také zde: http://en.wikipedia.org/wiki/Convention_over_configuration) a uplatněním techniky dependency injection.

Aktuální verzí specifikace EJB je 3.1, která přináší řadu dalších užitečných vlastností (Singleton, Embeddable API, Automaticky vytvářené časovače, cron-like časovače, Asynchronní volání metod u Session EJB, EJB 3.1 lite, EJB komponenty bez lokálního rozhraní, apod). Hlavní důraz je kladen na odlehčení EJB kontejneru a zavést možnost provozu EJB aplikací bez složitého a komplikovaného aplikačního serveru.

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.) a
  • 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či 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 konfiguraci 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 (tyto komponenty jsou přítomny kvůli zpětné kompatibilitě, nahrazuje je technologie Java Persistence API, která je oddělená od specifikace EJB);
  • Stateless Session EJB;
  • Stateful Session EJB;
  • Message-Driven EJB;
  • Singleton EJB (od EJB 3.1)

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/javaee/5/docs/tutorial/doc/bnbnb.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

EJB a NetBeans

Pozn.: EJB 3.0 je podporováno až od NetBeans verze 5.5.