Beans de Sessão com Estado - INF

Propaganda
UFG - Instituto de Informática
Especialização em Desenvolvimento de
Aplicações Web com Interfaces Ricas
EJB 3.0
Prof.: Fabrízzio A A M N Soares
[email protected]
Aula 6 – EJB
Enterprise Java Beans



EJB ou Enterprise JavaBeans é um dos
principais componentes da plataforma JavaEE
(Java Enterprise Edition).
É um componente do tipo servidor que executa
no container do servidor de aplicação.
Os principais objetivos da tecnologia EJB são
fornecer
um
rápido
e
simplificado
desenvolvimento de aplicações Java baseado
em componentes distribuídos, transacionais,
seguros e portáveis.
Enterprise Java Beans

Atualmente ele encontra-se na versão 3.1 e o
seu futuro é definido conjuntamente entre
grandes empresas como IBM, Oracle e HP
como também por uma vasta comunidade de
programadores numa rede mundial de
colaboração sob o portal do JCP.
Enterprise Java Beans
EJB 2.1 vs EJB 3.0


A grande mudança entre a versão 2.1 e a
versão 3.0 é a introdução de anotações Java.
As anotações facilitam o desenvolvimento
diminuindo a quantidade de código e o uso de
arquivos de configuração XML.
Enterprise Java Beans


A plataforma JavaEE providencia algumas
facilidades dedicadas à camada de lógica de
negócio e para o acesso a banco de dados.
Através do EJB o programador utiliza a
infraestrutura do servidor de aplicação voltada
para o desenvolvimento de aplicações de
missão crítica (de alta importância para a
empresa) e de aplicações empresariais em
geral.
Enterprise Java Beans
Acesso aos Java Beans




Para acessar os EJB é necessário definir as
suas interfaces de acesso que são: Interface
Local, Interface Remota ou Ambas.
A Interface Local define o acesso ao bean
somente no computador onde está sendo
executado o servidor de aplicação.
A Interface Remota define o acesso ao bean
somente a computadores externos.
Ambas define acesso ao bean tanto do
computador com o servidor de aplicação ou
computadores externos.
Acesso aos Java Beans
Acesso aos Java Beans
Acesso aos Java Beans
Tipos de EJB

Session Beans

Message Driven Beans

Entity Beans
Session Beans

É o tipo mais simples de EJB.

Atuam como controlador da interação entre

outros beans

Representam um fluxo de tarefas


Contêm a lógica de negócio
Gerenciam as interações entre os beans de
entidade
Tipos de Session Beans


Há dois tipos de beans de sessão: com
preservação de estado e sem preservação de
estado.
Parte da identificação de um bean de sessão é
a definição de suas responsabilidades - uma
das quais pode ser manter o estado do cliente
entre as chamadas.

Beans de Sessão sem Estado

Beans de Sessão com Estado
Beans de Sessão com Estado


Os beans de sessão com preservação de
estado contêm informações de estado sobre a
conversação entre o cliente e o contêiner EJB.
Uma instância de bean de sessão com
preservação de estado existe apenas durante a
conversação do cliente.
Beans de Sessão com Estado


Normalmente, esses beans executam os
serviços utilizando esses dados para o cliente.
Os serviços fornecidos pelo bean de sessão
com preservação de estado podem coordenar
as interações de outros objetos de negócios
(beans de sessão e beans de entidade).
Exemplo

Um carrinho de compras contendo objetos para
compra pode ser implementado utilizando um
bean de sessão com preservação de estado,
porque ele retém as informações enquanto o
cliente está interagindo com o aplicativo.
Beans de Sessão com Estado



Os beans de sessão com preservação de
estado são alocados para um cliente específico
Eles consomem mais recursos do sistema que
um bean de sessão sem preservação de
estado, visando a vantagem de reter o estado
do cliente.
O contêiner gerencia esses recursos,
normalmente “passivando” (gravando no disco)
os beans de sessão com preservação de
estado e reativando-os quando e conforme
necessário.
Ciclo de vida de um Bean com Estado
Beans de Sessão sem Estado



Os beans de sessão sem preservação de
estado não contêm informações de estado
sobre a conversação entre o cliente e o
contêiner EJB.
“Sem preservação de estado” significa
realmente sem estado da conversação do
cliente.
Portanto, um bean de sessão sem preservação
de estado pode conter outros tipos de estado,
como uma conexão com o banco de dados,
que pode ser utilizada por qualquer cliente.
Beans de Sessão sem Estado


Os beans de sessão sem estado executam
serviços genéricos que não utilizam dados do
estado do cliente de chamadas de método
anteriores
Em vez disso, recebem toda a entrada
apropriada como parâmetros na chamada de
método atual ou obtêm os dados de outras
origens durante a chamada de método (como
de beans de entidade ou acessando um banco
de dados por meio do JDBC).
Beans de Sessão sem Estado

Os beans de sessão sem preservação de
estado são normalmente desenhados a partir
de um conjunto pronto e utilizados para
despacho,
conforme
necessário,
para
manipular os pedidos que chegam.
Beans de Sessão sem Estado



Como todas as instâncias são equivalentes, os
beans de sessão sem preservação de estado
não precisam conhecer seu cliente.
Isso pode permitir aumento no desempenho e
na escalabilidade.
Os beans de sessão sem preservação de
estado são mais eficientes porque é possível
compartilhar uma instância entre os pedidos
não-contíguos, em vez de “ligar” a uma
determinada sessão de atividade.
Ciclo de vida do Bean sem Estado
Qual Bean de Sessão usar?



Em geral, escolha o tipo de bean de sessão que mais
naturalmente se adapte à conversação com o cliente.
Há estratégias para forçar o ajuste de um bean de
sessão com preservação de estado em um bean de
sessão sem preservação de estado, como armazenar
o estado do cliente no cliente e reenviar em cada
chamada ou armazenar e recuperar o estado do
cliente a partir de um banco de dados em cada
chamada de método.
Essas estratégias, entretanto, podem realmente
reduzir a escalabilidade em razão de códigos extras
no tráfego de rede e no acesso a dados.
Beans de Sessão na Web

Se o bean de sessão for criado para
implementar um serviço da Web, será
necessário utilizar um bean de sessão sem
preservação de estado, conforme definido na
especificação da API JSR 1.3.
Padrão Fachada de Sessão



Uma utilização comum dos beans de sessão é
como uma fachada que encapsula interações
entre os objetos na Camada de Negócios.
O bean de sessão serve para resumir essa
complexidade, fornecendo uma interface mais
simples para os clientes.
Esse padrão é descrito detalhadamente em
Padrões do JavaEE - Padrão de Fachada de
Sessão.
Padrão Fachada de Sessão



Por exemplo, geralmente é um bom hábito tirar
a lógica entre os beans de entidade e mover
para os beans de sessão para minimizar o
acoplamento entre os beans de entidade.
Os beans de entidade podem ser acessados
por meio de interfaces locais, uma vez que a
fachada do bean de sessão fornece acesso
aos clientes remotos.
Essa abordagem é mais efetiva quando há
vários beans de entidade estreitamente
relacionados.
Nó de Extremidade de Serviços da Web


Os beans de sessão sem preservação de estado podem
ser utilizados para implementar serviços da Web.
Esse bean também é chamado de Bean de
Implementação de Serviço e precisa preencher os
requisitos a seguir:


Ele deve ter um construtor público padrão.
Ele deve implementar todos os métodos declarados
pelo Service Endpoint Interface e seu método de
negócios deve ser público e não final ou estático.

Ele deve ser um bean sem preservação de estado.

A classe deve ser pública, mas não final ou abstrata.
Download