Os session beans servem para executar uma tarefa, através de seus métodos. Ele não é compartilhado durante seu uso por determinado cliente e não é persistente.
- Os statefull guardam informações de estado entre as requests de determinado cliente em suas variáveis de instância enquanto for necessário manter estas informações
- Os stateless só mantém a informação do cliente enquanto estão executando o método, podendo atender mais clientes com um número menor de beans
Os entity beans representam um objeto de negócio com armazenamento persistente, normalmente mapeados para uma tabela do banco de dados, e podem ser compartilhados entre vários clientes
- BMP é quando você cria seus métodos para realizar a persistência manualmente (através de outro bean) e CMP é quando você apenas informa o conteiner como vai ser o mapeamento e ele se encarrega de como realizar a persistência
E o message-driven bean serve para processar mensagens assincronamente, funcionando de forma parecida a um listener.
Nos tutoriais da Sun eles usam como exemplo para um stateless session bean uma aplicação de conversão de moeda, de statefull session bean um carrinho de compras e como entity bean uma conta corrente.