quarta-feira, 18 de abril de 2007

Seam components

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 Beans
Sã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 Beans
Ao 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 Beans
Sã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

JavaBeans
Javabeans 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 beans
Message-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

segunda-feira, 9 de abril de 2007

Contextos do JBOSS SEAM

Olá,

já ouviram falar de JBOSS SEAM, pois é este framework parece que estar vindo para finalmente temos uma integração entre as camadas de uma aplicação web. Digo isso porque ele elimina os velhos problemas que temos de um aplicação web não ter acesso ao contexto da camada de negócio e vice/versa. Além disso ele implementa novos contextos que até então não existiam como por exemplo:
  • Stateless: Mesmo conceito do Stateless do EJB criado justamente para integração com este tipo de EJB.
  • Event context: Como o nome mesmo diz os objetos registrados neste contexto são vão estar disponíveis durante a execução de um determinado evento.
  • Page context: Contexto já conhecido por todos que trabalham com aplicações web, esta associado ao processo de renderização, carregamento, lauding de uma página.
  • Conversation context: É um dos contextos que diferencia o Seam de qualquer outro framework existente no mercado, com este contexto podemos criar unidades de conversação e registrar nestas unidade todos os objetos e serviços que a aplicação vai necessitar usar quando a mesma estiver sendo executada sobre este contexto. Neste contexto mesmo outras instâncias da aplicação sendo acessadas em janelas diferentes não terão acesso aos artefatos registrados no contexto da outra, ou seja a cada nova instância da aplicação em uma nova janela se caracteriza como uma instância independente, assim uma não terá acesso as informações da outra mesmo sendo executadas na mesma instância do browser.
  • Session context: Este também é muito conhecido por todos que trabalham com aplicações web e nem vou entrar em muitos detalhes. Em resumo este contexto inicia quando acessamos a primeira tela da aplicação e só será destruído quando fecharmos nosso browser ou fazermos um logoff implementado pela aplicação.
  • Business process context: Mais um contexto novo criado pelo Seam, este cara foi criado especialmente para trabalharmos com fluxos de trabalho(workflow), ele garante para nós que qualquer objeto ou serviço registrado neste contexto vai estar disponível até o fim do fluxo. O mesmo fica disponível para múltiplas interações e múltiplos usuários e seu estado é persistente ou seja se eu fechar a aplicação e no dia seguinte acessar ela novamente os objetos registrados no fluxo em questão estarão ali com as informações que eu deixei pela ultima vez, isso se alguém não acessou os mesmos e modificou pois como eu disse eles podem ficar disponíveis a múltiplos usuários, claro que vc pode e deve colocar aqui um controle de acesso para que somente determinados usuários tenham acesso a determinados fluxos, mais para isso o Seam tmb facilita a nossa vida, mais isso mostro com se faz em outro poust.
  • Application context: E por ultimo o tmb já conhecido contexto de aplicação, tudo que registrarmos neste contexto fica disponível para todos que acessarem a mesma, ou seja devemos registrar neste contexto somente serviços que serão acessados por todos e que são imutáveis pois este contexto só atualizado no startup do servidor web.
Bom hoje falei um pouco sobre os contexto existentes no JBOSS SEAM e suas principais utilidades.
Assim que der escreverei mais sobre este fantástico framework .

Abraços