Session Beans

A Wikipédiából, a szabad enciklopédiából

A Session Bean (munkamenet bean) a Java Platform, Enterprise Edition specifikációkban az Enterprise Bean egyik típusa. Ezen kívül jelenleg létezik még Message Driven Bean (üzenetvezérelt bean) ill. a 2006 előtti EJB verziók esetén volt egy harmadik bean típus, az Entity Bean (entitás bean). Az EJB 3.0-ban (Java EE 5) az Entity Bean-eket felváltották a Java Persistence API-val.

Ellentétben a JPA entitásokkal, amelyik adatbázisban tárolják a perzisztens adatokat, a Session Bean egy üzleti folyamatot képvisel, melyet az EJB konténer vezérel.

A Session Bean egy egyszerű kliens kérést (pl. adatbázis-hozzáférés), illetve üzleti folyamatokat (pl. hitelkártya-kezelés) reprezentál a szerveren. Elválasztja a klienst a szerver által végzett bonyolultabb tevékenységektől. Általában egyszerre csak egy klienst tud kiszolgálni. Ha a szerver leáll, akkor a Session Bean is elveszik. A Session Bean objektum lehet állapotmentes, állapottartó vagy egypéldányos.

Állapotmentes session bean[szerkesztés]

Az állapotmentes Session Bean (angolul stateless) nem perzisztens bean. A Session Bean a példányaiban állapottal nem rendelkezik, ezért a metódusok végrehajtásához szükséges összes adata a metódusok paramétereiből származik. Általában általános feladatokat lát el a kliens részére, tehát olyan üzleti funkcionalitásokat valósít meg, amelyek során nem történik állapottárolás. A kliens és a bean kommunikációja szinkron módon történik. Semmilyen klienssel kapcsolatos információt nem tart meg a kliens egyes hívásai között, csak a metódus végrehajtásának idejére tud adatokat tárolni.

Az állapotmentes Session Bean osztályokat @Stateless annotációval kell ellátni.

Példa az állapotmentes Session Bean-re:

package com.sun.tutorial.javaee.ejb;

import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebService;

@Stateless
public class HelloServiceBean {
    private String message = "Hello, ";

    public void HelloServiceBean() {}

    public String sayHello(String name) {
        return message + name + ".";
    }
}

Állapottartó session bean[szerkesztés]

Az állapottartó Session Bean-ben (angolul stateful) a tagváltozó egy egyedi kliens munkamenetet reprezentál. A bean valójában összekötő elem a kliens és az alkalmazás komponensei között. Az állapotát a kliens munkamenet ideje alatt őrzi meg. Használata olyan esetben indokolt, amikor a kliens egyes hívásai között is szeretnénk megőrizni az adatokat. Az állapottal rendelkező Session Bean-eket a @Stateful annotációval kell ellátni.

Egypéldányos session bean[szerkesztés]

Az egypéldányos Session Bean egy példányban létezhet egy alkalmazásban, életciklusa az alkalmazás életciklusával azonos. Használható például arra, hogy az alkalmazás indulásakor inicializálási feladatokat hajtson végre, vagy pedig olyan adatok tárolására, amelyeket alkalmazásszinten akarunk elérni. Az EJB konténer garantálja, hogy mindig fenn fog tartani egy megosztott példányt a egypéldányos session bean-ből. Az EJB 3.1-ben jelentek meg. Az egypéldányos session bean-eket a @Singleton annotációval hozhatunk létre.

Példa a Singleton Session Bean-re:

@Startup
@Singleton
public class StatusBean {
  private boolean status;

  @PostConstruct
  public void init() {
    status = "Ready";
  }
  ...
}

Külső hivatkozások[szerkesztés]

Források[szerkesztés]

  • Bilicki Vilmos: Programrendszerek fejlesztése, Typotex Kiadó
  • Ficsor Lajos: Enterprise Beans Java EE 6platform EJB 3.1