Os componentes Seam são POJOs (Plain Old Java Objects), Java Beans ou EJB3 Beans. Seam suporta os seguintes componentes:
EJB 3.0 stateless session beans
EJB 3.0 stateful session beans
EJB 3.0 entity beans
JavaBeans
EJB 3.0 message-driven beans
Vou falar agora um pouco sobre cada um, como o Seam utiliza suas funcionalidades para facilitar o desenvolvimento de sistemas.
EJB 3.0 Stateless Session BeansSão componentes que não mantém estado por múltiplas invocações, ou seja a cada nova invocação um novo estado é criado. Ele é usado em JSF Action Lsiteners, no entanto não prove propriedades para os componentes de tela do JSF. A vida de um EJB Stateless esta ligada ao
Contexto Stateless do Seam EJB 3.0 Stateful Session BeansAo contrário do Stateless este tipo de EJB mantém estado por múltiplas invocações. Com este estado aplicações não armazenam dados temporários em DATA BASES e sim no Stateful Session Beans. Este é umas da principais diferenças entre o Seam e outro frameworks web. As informações armazendas neste estado podem ser acessadas diretamente da sessão web( HttpSession ). O Seam manipula o ciclo de vida deste estado para vc evitando colisões entre diferentes estados em conversações diferentes.
Stateful Session Beans são usados com JSF action listener e com backing beans provendo propriedades para componentes de formulários JSF.
Por padrão Stateful Session Beans são registrado no contexto de conversation e o mesmo nunca pode ser registrado nos contexto Page or Stateless. Todas as requisições para o escopo Stateful Session Bean são serializadas pelo Seam.
EJB 3.0 Entity BeansSão Beans persistentes, objetos que armazenam os dados da aplicação. Este tipo de Bean não suporta
bijection ou
context demarcation. O Entity Beans não são usados em JSF action listener, no entanto tem grande utilização como provedores de dados as propriedades dos componentes de tela JSF. São muito usados com EJB Stateless Session Beans implementando a famosa funcionalidade CRUD (create, update, delete).
Por padrão os Entity Beans são adicionados no contexto de conversação(conversation) e nunca devemos adiciona-lo no contexto stateless
JavaBeansJavabeans são usados no Seam como stateless e stateful session bean. No entanto o mesmo não prove as funcionalidades dos Session Beans como: declaração e demarcação de transações, declarações de segurança, eficiente clusterização e replicação, serviço de persistência EJB 3.0, entre outros.
Por padrão os JavaBeans são adicionados no contexto de Evento(event context).
EJB 3.0 Message-driven beansMessage-driven beans podem funcionar como componentes do Seam, no entanto os Message-driven beans são chamados(invocados) completamete diferente dos outros componentes do Seam, ao invés de serem invocados por variáveis de contexto eles ficam escutando mensagens enviadas para uma Fila ou Tópico JMS. Os Message-driven beans não podem ficar limitados a um contexto do Seam. Nem tem acesso ao estado da sessão ou conversação do Bean chamador. Entretanto suportam bijection e outras funcionalidades do Seam.
Bom por hoje é só, no próximo tópico vou falar sobre interceptors, como registrar os componetes no Seam, como definimos escopos para os Beans no Seam entre outras funcionalidades.
Até mais, abraços