Enterprise JavaBeans

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În tehnologia informației, Enterprise JavaBeans ( EJBs ) sunt componentele software care implementează, pe partea de server , logica de afaceri a unei aplicații web în cadrul arhitecturii / platformei Java EE , efectuând servicii în favoarea părții front-end sau pentru logica de prezentare a unei aplicații web . Prin urmare, acestea reprezintă un strat software care se află pe un server de aplicații într-o arhitectură software cu mai multe niveluri .

Specificația pentru EJB definește mai multe proprietăți pe care EJB trebuie să le respecte, inclusiv persistența , suportul tranzacțiilor , gestionarea concurenței și securității și integrarea cu alte tehnologii, cum ar fi JMS , JNDI și CORBA . Actualul Standardul , EJB 3.2, finalizat în primăvara anului 2013 [1] , diferă considerabil de la versiunea 2.1 a specificației, deoarece introduce posibilitatea efectuării injecției de dependență și de a face configurații care au survenit anterior prin XML prin adnotări. EJB-urile au nevoie de un container EJB implementat de obicei în serverele de aplicații împreună cu containerul servlet pentru partea front-end.

Motive

Specific JavaBeans Enterprise este destinat să furnizeze o metodologie standard pentru implementarea logicii aplicației enterprise, adică a aplicațiilor care furnizează servicii prin Internet la scară largă. Pentru a crea aplicații de acest tip este necesar să se confrunte cu o serie de probleme tehnice care pot fi foarte complexe și laborioase de rezolvat. Enterprise JavaBeans intenționează să ofere o soluție la aceste probleme pentru a simplifica dezvoltarea acestui tip de aplicații.

Specificația Enterprise JavaBean descrie în detaliu cum se construiește un server de aplicații care oferă următoarele funcționalități:

În plus, specificația definește rolul containerului Enterprise JavaBean și cum să facă containerul să comunice cu EJB-uri.

Tipuri

Până la versiunea 2.1 a specificației existau trei tipuri de Enterprise JavaBeans, începând cu versiunea 3.0 încoace, există doar două, deoarece Entity Beans a fost depreciată. Pentru completitudine, sunt raportate toate tipurile de EJB-uri.

Sesiunea EJB

Cunoscut și sub numele de Session EJB . Ei gestionează procesarea informațiilor de pe server . Ele sunt, în general, o interfață între clienți și serviciile oferite de componentele disponibile pe server . Există două tipuri: apatrizi și apatrizi.

De la versiunea 3.2 a standardului EJB, acestea pot fi invocate asincron. Invocarea asincronă va avea ca valoare returnată o variabilă de tip Future <V>, care va permite apelantului să cunoască valoarea reală returnată, să verifice eventualele excepții și să anuleze un apel în curs.

Cu statut

Sunt numite și stateful . Beanele de sesiune de stare sunt obiecte distribuite care posedă o stare. Starea nu este persistentă, dar accesul la bean este limitat la un singur client .

Un exemplu de boabe de stare este:

 @Stateful
clasă publică Counter {
   private int total = 0;
   public int total () {
       randament total;
   }
   increment public nul () {
       total = total + 1;
   }
   public void clear () {
       total = 0;
   }
}

Fara stare

Cunoscut și sub numele de apatrizi . Beanele de sesiune fără stat sunt obiecte distribuite fără o stare asociată, această caracteristică permite accesul simultan la funcționalitatea oferită de bean . Conținutul variabilelor de instanță nu este garantat pentru a fi păstrat între diferite apeluri la metodele bean .

Un exemplu de fasole apatridă este:

 @Fara stare
public class SalutoBean {

 public String greetsUser () {
    returnează „Bun venit!”;
 }

}

EJB bazate pe mesaje

Numit și EJB-uri bazate pe mesaje . Au fost singurele bean cu funcționare asincronă (din versiunea 3.2 a sesiunii standard, EJB-urile pot fi invocate asincron). Folosind serviciul Java Message Service (JMS), aceștia se abonează la un subiect sau la o coadă și se activează atunci când primesc un mesaj trimis la subiectul sau la coada la care sunt abonați. Nu necesită instanțierea de către clienți .

Entitatea EJB

Ele sunt, de asemenea, numite entități EJB . Nu mai sunt acceptate, deoarece la versiunile 2.0 și 2.1 ale standardului EJB au avut performanțe foarte scăzute și programatorii au preferat să utilizeze apeluri directe JDBC sau cadre de persistență precum Hibernate sau MyBatis. Pentru a depăși această problemă, a fost introdus API-ul Java Persistence .

Scopul lor era să cuprindă obiecte de pe server care stochează date. Fasole de entitate au furnizat caracteristica de persistență a datelor :

  • Persistența gestionată de container (CMP): containerul este responsabil de stocarea și recuperarea datelor referitoare la un subiect utilizând un tabel al unei baze de date .
  • Persistența gestionată de bean (BMP): în acest caz, beanul se ocupă de salvarea și recuperarea datelor la care se referă, salvarea poate avea loc într-o bază de date sau cu orice alt mecanism, deoarece programatorul este însărcinată cu crearea mecanismului de persistență a datelor.

Versiuni

  • JSR 19: Enterprise JavaBeans 2.0 , la jcp.org .
  • JSR 153: Enterprise JavaBeans 2.1 , la jcp.org .
  • JSR 220: Enterprise JavaBeans 3.0 introduce capacitatea de a declara și configura Enterprise JavaBeans prin mecanismul de adnotări. Începând cu această versiune, un EJB nu mai trebuie să extindă nicio clasă specifică. Această modificare este deseori denumită obiect obișnuit Java simplu (POJO). Sunt introduse primele mecanisme de injectare a dependenței. Pentru persistență, fasole de entitate sunt abandonate și există Java Persistence API (JPA).
  • JSR 318: Enterprise JavaBeans 3.1 merge în direcția simplificării. Această direcție este forțată de difuzarea foarte puternică a Cadrului de primăvară. Introduce așa-numitul Lite EJB, adică posibilitatea de a introduce Enterprise JavaBeans într-o arhivă web, care până acum ar putea conține doar servleturi, dar nu EJB-uri. Acum este posibil să invocați EJB-uri dintr-o aplicație Java SE, fără a fi nevoie să utilizați containere servlet sau servere de aplicații. Beanele de sesiune pot fi invocate asincron și există posibilitatea de a crea temporizatoare EJB.
  • JSR 345: Enterprise JavaBeans 3.2 introduce capacitatea de a invoca fasole de sesiune în mod asincron.

Enterprise JavaBeans și microservicii

În ceea ce privește dezvoltarea microserviciului prin utilizarea Enterprise JavaBeans, Antonio Goncalves, membru expert al CDI 2, Java EE 8 și autor al numeroaselor cărți despre Java EE, scrie:

„Java EE are nevoie de un API Java SE Container simplu pe care să-l putem bootstrap cu ușurință. Majoritatea specificațiilor EE sunt oricum „încorporabile” oricum și cele pe care le-ați menționat sunt sau vor fi (CDI 2.0 cu un API bootstrap Java SE în Java EE 8). Dar sunt mai puțin încrezător în EJB-uri. EJB-urile nu sunt „atât de micro”, sunt cam grase (și vorbesc doar despre numărul de servicii pe care le includ). Aș prefera să văd actualizarea Java EE simultanitate (pentru a avea invocații asincrone în afara EJB-urilor) și să mă concentrez pe CDI, JTA, simultanitate, JPA și JAX-RS (dar, din nou, de ce să nu adăugăm validare Bean și servlets, dacă avem JAX -RS?). "

( Antonio Goncalves, Un container care să le conducă pe toate )

Ceea ce intenționează să sublinieze este că numărul de servicii pe care le aduce cu sine specificația Enterprise JavaBeans este mare, deci nu este recomandat atunci când doriți să creați microservicii.

Notă

Elemente conexe