Un bean session est un type de bean enterprise. Il est créé par un client et sa durée de vie se limite en général à la durée d'une session client-serveur.
Les beans session sont utiles pour décrire les interactions entre les autres beans (le flux de tâches) et pour implémenter des tâches spécifiques. Ils ne représentent pas de données dans la base de données, mais peuvent y accéder, permettant ainsi de lire, mettre à jour et insérer des données dans un processus métier. Les beans session accèdent à des données qui couvrent des concepts, ne sont pas partagées et sont généralement en lecture seule. Les beans session contiennent la logique applicative et les données persistantes du modèle entité. Il existe trois types de beans session : sans état, avec état et singleton.
Un bean session sans état est mis en pool par le conteneur pour gérer plusieurs requêtes provenant de clients multiples et ne conserve aucun état conversationnel.
Un bean session avec état agit pour un client unique et gère les informations de session propres au client (également appelées état conversationnel) entre plusieurs transactions et appels de méthode. Ce bean existe pendant toute la durée d'une session client/serveur unique.
Un bean session singleton est un composant d'un bean session qui est instancié une fois par application. Si le conteneur est réparti sur plusieurs machines virtuelles, chaque application contiendra une instance de bean singleton pour chaque machine virtuelle Java.