L’EJB singleton è una classe che viene istanziata per applicazione. l’EJB vive per tutta la durata dell’applicazione. La classe viene annotata con @singleton.
Di solito un singleton viene istanziato quando vuole l’EJB Container, ma possiamo anche influenzare questa cosa annotando la classe come @startup (diciamo all’EJB container di caricare il nostro EJB all’inizio).
@DependsOn è un’annotazione usata per dire all’EJB container la dipendenza tra ejb.
@Singleton
@Startup
@DependsOn(“MyLogEJB “)
public class MyLogEJB {public void logShopperCount() {
…
}}
i metodi di callback, per gli ejb singleton sono:
@PostConstruct
@PreDestroy
con questo genere di ejb, dobbiamo pensare alla concorreza.
ci sono due modi di gestirla:
Container-Managed concurrency se ne occupa il container. si annota un metodo con l’annotazione @lock.
@Lock(LockType.WRITE)
public void operazione1() {
…
}@Lock(LockType.READ)
public void operazione2() {
….
}
Bean-Managed concurrency se ne occupa il programmatore.