Quand tu me parles de singleton, tu parles d'EJB Singleton ? Si oui, rassure toi, le conteneur sait ce qu'il fait. Mais il faut littéralement manger de la mémoire pour en arriver à faire du swap.
A la base, ce sont les EJB statefull qui sont mis sur disque, afin d'éviter de tenir des contextes en mémoire qui sont potentiellement inutile, ou inutilisés depuis un certain temps. Les EJB Singleton ne sont pas mis sur disque. Sache néanmoins que par défaut, plusieurs threads ne peuvent au même moment accéder à ton EJB. Pour rendre cela possible, il faut utiliser
@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
.
Selon moi, le problème réel derrière n'est pas les performances, mais la concurrence. Si tu autorises plusieurs threads à accéder au même moment à ton singleton, faudra gérer à la main le verrouillage. Sinon, tes threads sont mis en attente pendant que l'on utilise ton EJB.
Partager