Programovanie

Čo je to EJB? Vývoj Enterprise JavaBeans

Enterprise JavaBeans (EJB) je špecifikácia pre vývoj rozsiahlych distribuovaných obchodných aplikácií na platforme Java. EJB 1.0 bol vydaný v roku 1998. Najaktuálnejšie vydanie, EJB 3.2.3, bolo prijaté pre začlenenie do Jakarty EE, kde bude premenované na Jakarta Enterprise Beans.

Architektúra EJB

Architektúra EJB sa skladá z troch hlavných komponentov: enterprise bean (EJBs), kontajner EJB a aplikačný server Java. EJB fungujú vo vnútri kontajnera EJB a kontajner EJB vo vnútri aplikačného servera Java.

Existujú dva typy EJB - fazuľa relácie a fazuľa riadená správami:

  • Session fazuľa sú vyvolané klientom a programovo sprístupňujú klientovi podnikové funkcie, ako sú transakcie a správa zdrojov.
  • Fazuľa riadená správami tiež zapuzdrujú a poskytujú podnikové funkcie, ale sú asynchrónne a riadené udalosťami. Fazuľa riadená správami načúva a reaguje na udalosti a klient ich nemôže vyvolať.

Akonáhle boli fazule entity použité na zabezpečenie perzistencie v systéme EJB, boli nahradené rozhraním Java Persistence API. Pokračujte v čítaní, aby ste sa dozvedeli viac o fazulách session a fazolách riadených správami.

EJB vs JavaBeans

Enterprise JavaBeans bol prvým vývojovým modelom založeným na komponentoch pre Java EE. EJB je podobný JavaBeans v tom, že je založený na komponentoch, ale tým podobnosť končí:

  • A JavaBean je trieda Java, ktorá zapuzdruje viac objektov a vyhovuje určitým konvenciám. JavaBeans sa používajú hlavne na vývoj na strane klienta.
  • An podniková fazuľa (EJB) je trieda Java naplnená špecifickými schopnosťami na strane servera. Enterprise bean sa používajú vo veľkých obchodných aplikáciách a systémoch.

Session fazuľa

A fazuľa na sedenie je najgenerickejší typ podnikových beanov, ktorý predstavuje množstvo obchodných funkcií, ktoré môže klient zavolať. Klientom v tomto prípade môže byť iná trieda v lokálnom JVM alebo vzdialený hovor.

Kontajner EJB spravuje životný cyklus fazule relácie, ktorá je určená stavom fazule:

  • Fazuľa bez štátnej príslušnosti sú podobné rozsahu žiadosti v rozhraní Java Servlet API. Fazuľa bez štátnej príslušnosti obsahuje veľa funkcií, ktoré je možné vyvolať, ale inak sú bez štátnej príslušnosti.
  • Stavové fazule sú spojené iba s jedným klientom a pripájajú sa k prebiehajúcej relácii daného klienta. Stavové fazule relácie fungujú podobne ako rozsah relácie v rozhraní Servlet API.
  • Singleton fazuľa sú podobné rozsahu aplikácie v Servlet API. Jeden fazuľa relácie singleton existuje pre každého klienta iba raz.

Bezpečnosť nití s ​​fazuľkami session

K stavovému objektu bean typu session bean má prístup iba jeden klient, takže pri práci s týmto typom objektu bean je zaručená bezpečnosť vlákna. Fazuľa bez štátnej príslušnosti a fazuľa singleton sú flexibilnejšie, čo umožňuje súčasné pripojenie, ktoré musí spravovať vývojár. Pri práci s týmito druhmi fazule ste zodpovední za bezpečnosť nití.

Fazuľa riadená správami

Brány riadené správami (MDB) sú vyvolané prostredníctvom správ JMS (Java Message Service). JMS funguje ako distribuovaný vzor príkazov, kde fazuľa riadená správami slúži ako poslucháč príkazu. Keď správa dorazí na tému alebo do frontu, vyvolá sa fazuľa riadená správou, ktorá načúva na túto tému.

Fazuľa riadená správami sa nepoužívajú tak bežne ako fazule relácie, ale sú výkonné. Pretože sú asynchrónne a riadené udalosťami, sú obzvlášť užitočné pre dlhodobé úlohy, kde je dôležité šetriť zdroje.

Najjednoduchšia architektúra by pozostávala z aplikácie EJB a jej kontajnera a servera, ktoré sa koordinujú so službou správ spracúvajúcou MDB. Vo výrobe by vaša architektúra pravdepodobne obsahovala tretí komponent určený na konzumáciu fazule. Pri vývoji mohli všetky tieto komponenty bežať na rovnakom lokálnom počítači.

Obrázok 1 zobrazuje typickú architektúru riadenú udalosťami s fazuľami riadenými správami.

Matthew Tyson

Práca s fazuľami založenými na správach je viac zapojená ako práca s fazuľami session. V prostredí založenom na udalostiach budete zvyčajne potrebovať sprostredkovateľa správ, ako je ActiveMQ.

Zatiaľ čo fazuľa session je jednoduchšia, a teda častejšie sa používa v EJB, architektúry založené na udalostiach sa stali populárnymi, najmä pri výbuchu mikroslužieb.

Anotácie EJB

Definovanie a konzumácia podnikových bôbov bola pre mnohých vývojárov problémom až do vydania EJB 3.0, ktoré zaviedlo anotácie k špecifikácii EJB. Vďaka anotáciám je veľmi ľahké nakonfigurovať podnikové fazule pre širokú škálu funkcií nájdených v prostredí Java EE. Pokračujte v čítaní, aby ste mohli začať s anotáciami EJB.

@Stateless: Definujte bean relácie bez štátnej príslušnosti

Na označenie triedy ako fazule relácie bez štátnej príslušnosti používate znak javax.ejb. bez štátnej príslušnosti anotácie, ako je uvedené v zozname 1.

Zoznam 1. Príklad anotácie @ bez štátnej príslušnosti

 import javax.ejb.Stateless; @Stateless public class MyStatelessBean {public String getGreeting () {return "Hello JavaWorld."; }} 

Táto bezstavová fazuľa obsahuje jednoduchý podpis, ktorý neberie žiadne argumenty a vráti reťazec. Nenechajte sa však zmiasť jednoduchosťou: táto fazuľa dokáže všetko, čo potrebujete, vrátane interakcie s inými fazuľami, službami alebo dátovou vrstvou vašej aplikácie.

@EJB: Konzumujte fazuľa bez štátnej príslušnosti

Po definovaní fazule relácie je jej použitie také jednoduché:

Výpis 2. Príklad anotácie @EJB

 verejná trieda MyServlet rozširuje HttpServlet {@EJB MyStatelessBean myEjb; public void doGet (požiadavka HttpServletRequest, odpoveď HttpServletResponse) {response.getWriter (). write ("EJB Says" + testStatelessEjb.getGreeting ()); }} 

Tu vpichneme fazuľu bez štátnej príslušnosti do servletu a potom je k dispozícii na použitie. Všimnite si, ako je fazuľa identifikovaná pod @EJB anotácia. Označenie „bez štátnej príslušnosti“ nám hovorí, že táto fazuľa nebude klienta sledovať. Pretože je bez štátnej príslušnosti, vieme tiež, že táto fazuľa podlieha podprocesom, ak funguje mimo vyvolanej metódy.

@Remote: Definujte vzdialené rozhranie EJB

Vo vyššie uvedených príkladoch som predpokladal, že EJB a EJB klient bežali v rovnakom JVM. Ak podniková fazuľa a jej klient pracujú v samostatných JVM, musí EJB definovať a @ Remote rozhranie. V takom prípade je na vás, aby ste definovali a implementovali rozhranie, ako je uvedené v zozname 3.

Zoznam 3. @ Príklad vzdialenej anotácie

 @ Diaľkové verejné rozhranie MyStatelessEjbRemote {Reťazec sayHello (Názov reťazca); } 

Vzdialené rozhranie sa odošle klientovi na vyvolanie. Výzvy na ňu budú následne uspokojené implementáciou EJB na strane servera. The MyStatelessBean príklad v zozname 4 implementuje vzdialené rozhranie.

Zoznam 4. Implementácia vzdialeného rozhrania

 verejná trieda MyStatelessBean implementuje MyStatelessEjbRemote {...} 

Vzdialené rozhranie je implementované rovnako ako normálna trieda implementujúca rozhranie. Ako spotrebiteľ vzdialeného EJB musí mať klientska aplikácia prístup k definícii triedy pre vzdialené rozhranie. Definíciu triedy pre vzdialené rozhranie môžete zbaliť ako súbor JAR závislostí.

Miestne vs vzdialené rozhranie

Aj keď je dôležité vedieť, ako implementovať vzdialené rozhranie, v praxi je bežnejšie používať miestne rozhranie. Lokálne rozhranie sa používa v predvolenom nastavení a funguje vždy, keď je EJB vyvolaný v rovnakom kontexte JVM. Používanie vzdialeného rozhrania prichádza do hry, keď je aplikácia distribuovaná do viacerých JVM.

Stavové sedenie fazule a jednolôžkové fazule

Proces definovania a spotreby stavového @Session fazuľa a @Singleton fazuľa je to isté, čo ste videli @Bezstavový fazuľa. Pamätajte na sémantiku:

  • Pre toho istého klienta je možné vytvoriť inštanciu a použiť viac fazúľ relácie.
  • Jedno fazuľa bude pre celú aplikáciu existovať iba raz.

Bezpečnosť závitov a plánovanie pomocou singletonov

Bezpečnosť vlákien je zabudovaná, keď pracujete s fazuľami session, ale k bezstavovým aj singletonovým fazuľkám majú prístup súčasne viacerí klienti. Vývojári sú zodpovední za bezpečnosť vlákien pri implementácii týchto druhov fazule.

Fazuľa Singleton ponúka určitú podporu pre bezpečnosť nití prostredníctvom @Lock anotácia. Môžete použiť anotáciu @Lock v metódach singleton bean na nastavenie privilégií na čítanie a zápis pre každú metódu. Tieto dve možnosti sú @Lock (LockType.READ) alebo @Lock (LockType.WRITE), čo je predvolené nastavenie.

Ďalšou užitočnou vlastnosťou fazule singleton je schopnosť jednoduchým spôsobom plánovať úlohy pomocou klávesu @ Časový plán anotácia. Zoznam 5 ukazuje, ako naplánovať úlohu každý deň na poludnie.

Zoznam 5. Príklad anotácie @Schedule

 @Singleton verejná trieda MySchedulerBean {@Schedule (hour = "12") void doIt () {System.out.println ("Hello at Noon!"); }} 

CDI vs EJB

CDI alebo Context and Dependency Injection je novšia podniková špecifikácia, ktorú niektorí vývojári navrhli, by mohla nahradiť EJB.

Na vysokej úrovni ponúka CDI univerzálny rámec komponentov, zatiaľ čo EJB vyniká svojimi bohato vybavenými jednotlivými komponentmi. Zatiaľ čo CDI používa závislosť na definovanie a odkazovanie na akýkoľvek softvérový komponent, komponenty EJB sú formálnejšie definované, pričom každý z nich ponúka špecifickú sadu funkcií. Obe špecifikácie sú plánované na budúci vývoj v rámci Jakarty EE, kde bude nakoniec vyriešená otázka, či by CDI mala nahradiť EJB.

Záver

Enterprise JavaBeans bola prvou špecifikáciou, ktorá ponúka jednoduchý spôsob zapuzdrenia a opätovného použitia obchodnej logiky v podnikových aplikáciách Java. EJB, ďaleko od starého monštra veľkej váhy, je dnes štíhly rámec založený na anotáciách, ktorý vám umožní prístup k širokej škále podnikových funkcií hneď po vybalení z krabice. Zvážte EJB, keď nabudúce budete požiadaní, aby ste rýchlo rozšírili distribuovanú a škálovateľnú obchodnú aplikáciu. Možno by ste boli milo prekvapení.

Tento príbeh „Čo je EJB? Evolúcia Enterprise JavaBeans“ bol pôvodne publikovaný spoločnosťou JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found