Tutorial cosa sono i Ejb Session Bean

0
2375

Nell’ articolo precedente abbiamo già detto che gli Ejb Session Bean sono usati per eseguire processi di logica in maniera transazionale.

I Session Bean si dividono in Stateless e Stateful, come dice la parola stessa il primo non gestisce ne tiene traccia dello
stato di comunicazione tra il bean ed il chiamante mentre il secondo si. In pratica questo fa si che nel primo caso viene resa disponibile una qualsiasi istanza del bean;  mentre nel secondo viene resa disponibile l’istanza precedentemente chiamata (ovvero si ha un istanza dedicata).

Session Bean Stateless

Per implementare una session bean stateles bastano pochi passi:

  1. Creiamo un interfaccia con la dichiarazione del metodo che vogliamo creare marcandola con annotation @Local se vogliamo che giri su la stessa java virtual machine o @Remote se invece vogliamo che giri su una macchina remota.
  2. Creiamo una classe che implementi l’interfaccia appena creata marcandola con annotation @Stateless

Per chiamare l’ejb da noi creato possiamo agire in due modi:

  1. chiamare direttamente il metodo se questo risiede sulla stessa JVM marcando l’oggetto con @EJB
  2. oppure se risiede esternamente attraverso una connessione al servizio JNDI (Java Naming Directory)

Qui sotto riporto un link ad un esempio:

Session Bean Example

Session Bean Stateful

L’ implementazione di una session bean statefull è più complesso questo perchè esso ha un suo  ciclo di vita che possiamo riassumere in 4 fasi:

  • Creazione
  • Attivazione
  • Passivazione
  • Distruzione

Ecco come crearne :

  1. Creiamo un interfaccia con la dichiarazione del metodo che vogliamo creare marcandola con annotation @Local se vogliamo che giri su la stessa java virtual machine o @Remote se invece vogliamo che giri su una macchina remota.
  2. Creiamo una classe che implementi l’interfaccia appena creata marcandola con annotation @Stateful
  3. A seconda delle nostre esigenze possiamo creare dei metodi legati ai 4 stati precedentementi visti usufuendo delle seguenti annotazioni:
  • @PostConstruct : il metodo verrà eseguito subito dopo la costruzione
  • @PostActivate    : il metodo verrà eseguito subito dopo l’attivazione
  • @PrePassivate    : il metodo verrà eseguito subito prima  della passivazione
  • @PreDestroy       : il metodo verrà eseguito subito prima la distruzione

10