Detalhes sobre o modelo EJB

Localização, Factory e Interfaces

ejb3.gif (13287 bytes)

Item Sintaxe Exemplo
Nome do EJB no DD <nome>EJB AccountEJB
Nome de display do EJB JAR no DD <nome>JAR AccountJAR
Classe de implementação do EJB <nome>Bean AccountBean
Home interface <nome>Home AccountHome
Remote interface <nome> Account

Tipos de Beans

Característica

Session Bean

Entity Bean

O que o Bean  representa
  • Uma conversação transiente com um cliente
  • Pode ser considerado uma extensão do cliente que o criou
  • Pode acessar um banco de dados usando JDBC ou acessando um Entity Bean
  • Dão uma visão OO de um BD
  • Representam dados num banco de dados e os métodos que agem sobre os dados
  • Num SGBDR, cada Bean poderia  representar um registro de uma tabela, por exemplo
Tempo de vida
  • Igual ao tempo de vida do cliente. Existe somente durante uma sessão cliente/servidor
    (curto espaço de tempo)
  • Persiste tanto quanto os dados do banco de dados (longo espaço de tempo)
Atributos
  • Representam o estado da conversação. Este estado é mantido entre chamadas a métodos mas não depois que a sessão acaba
  • Representam dados de um banco de dados (colunas de uma tabela, por exemplo)
Persistência
(além da sessão)
  • O Bean deve gerenciar sua própria persistência
  • Gerenciada automaticamente pelo Container
Compartilhamento
  • Um único Bean por cliente (sem compartilhamento)
  • Acesso compartilhado entre clientes
  • Container gerencia a concorrência
Criação
  • No início de uma sessão
  • Identificado usando uma chave primária
  • A criação de um novo Bean insere dados num banco de dados
Durabilidade
  • Não sobrevive a um crash de servidor
  • Sobrevive a um crash de servidor
Transação
  • Pode ser "transaction-aware", se assim for programado
  • Transacional
Exemplo
  • Shopping Cart
  • User Account Bean mantendo os dados associados a um usuário num site de compras

Diferenças entre dois tipos de Session Beans

Característica

Stateful Session Bean

Stateless Session Bean

Gerência de estado
  • Gerenciado automaticamente pelo Container
    (Activation, Passivation)
  • Não há estado a ser gerenciado
  • Bean pode sair da memória sem salvar qualquer coisa (não há "Passivation")
  • Beans são intercambiáveis e podem ser alocados de um "pool"

Pool-Session-Beans-Stateless.gif (5199 bytes)

Responsabilidades
  • Estado conversacional pode ser mantido no Bean
  • O cliente tem que manter qualquer estado necessário
Performance
  • Mais pesado
  • Extremamente lightweight
Exemplo
  • Shopping Cart
  • Verificação de crédito
    (Todo o trabalho pode ser feito numa única chamada de método)
  • Mailer Bean para enviar mail confirmando uma compra
  • Bean que valida um ID de empregado
  • Acesso a um Catálogo de Produtos. Embora pareça melhor usar um Entity bean aqui, devido à persistência, lembre que o catálogo não está associado a um cliente particular e que nenhum estado sobre o cliente deve ser mantido. Porém, um estado geral, não específico a um cliente particular pode ser mantido. Podemos usar Stateless Beans para montar uma cache do catálogo à medida que este é acessado. O Bean provê browsing e searching no catálogo. Como o Bean poderá manipular várias linhas do catálogo ao mesmo tempo (no search, p. ex.) e oferecer uma visão compartilhada de informação, o Bean poderá ser compartilhado.

Regras para escolher o tipo de Bean

Detalhes sobre os serviços automáticos

Gerência de estado

Gerência de persistência

Gerência de transações

Segurança

Detalhes adicionais sobre o Container

Resumo: Usar Enterprise Beans ou não?

detalhes programa