Buscar

Livro Digital - Programação para Web II 43

Prévia do material em texto

Imagine a confusão se os produtos de um cliente se misturassem com os produtos
de outro.2) Os produtos adicionados devem ser mantidos entre as chamadas dos
métodos da classe, o que con�gura o estado conversacional.
FIGURA 125 – CARRINHOBEAN
FONTE: K19 (2015)
22 SSTTAATTEEFFUULLLL SSEESSSSIIOONN BBEEAANNSS 33..00
Da mesma forma que os stateless session beans, o primeiro passo é a de�nição de
sua interface. Considerando o exemplo de carrinho de compras, uma possível
implementação da interface é mostrada na �gura a seguir.
FIGURA 126 – INTERFACE PARA O BEAN
FONTE: K19 (2015)
Após a de�nição desta interface, agora, implementaremos a classe java que utiliza
Unidade 3 - Tópico 2 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
2 of 15 26/06/2024, 16:25
exatamente da mesma forma. O que muda é a característica do
componente, que deve ser utilizado de acordo com o contexto de sua
aplicação.
33 SSTTAATTEEFFUULLLL SSEESSSSIIOONN BBEEAANNSS 33..11
Na versão 3.1 quando o acesso é local, não há mais necessidade de se de�nir uma
interface ou utilizar a anotação @Local, bastando anotar uma classe com
@Stateful, conforme a Figura 129.
33..11 CCIICCLLOO DDEE VVIIDDAA DDOOSS SSTTAATTEEFFUULLLL SSEESSSSIIOONN BBEEAANNSS
Todas as instâncias criadas pelo AS, mais especi�camente pelo EJB Container, têm
seu ciclo de vida administrado de forma transparente para o desenvolvedor. Um
statefull session bean possui somente três estados: NÃO EXISTE, PRONTO,
PASSIVADO.
FIGURA 129 – VERSÃO 3.1
FONTE: K19 (2015)
As transições de estado possíveis para um statefull session bean são
demonstradas abaixo K19(2015):
   
Unidade 3 - Tópico 2 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
4 of 15 26/06/2024, 16:25
ser mais útil. Por exemplo, quando o cliente de um carrinho de compras �naliza a
compra, a instância que representa o carrinho pode ser destruída. É possível ainda
adicionar um método de negócio anotado com @Remove, declarando que após a
execução desse método a instância não é mais necessária (Figura 130).
FIGURA 130 – MÉTODO REMOVE
FONTE: Adaptado de K19(2015)
PPAASSSSIIVVAADDOO -->> PPRROONNTTOO -->> NNÃÃOO EEXXIISSTTEE
Uma instância pode ser passivada porque �cou ociosa quando estava no estado
PRONTO. Isto ocorre quando um cliente não realiza chamada durante um tempo.
Quando uma instância passivada não é mais útil, o EJB Container a ativa e depois a
destrói (Figura 131).
FIGURA 131 – MUDANÇA DE ESTADO
Unidade 3 - Tópico 2 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
6 of 15 26/06/2024, 16:25
FONTE: Adaptado de K19 (2015)
44 SSIINNGGLLEETTOONN SSEESSSSIIOONN BBEEAANNSS
Surgido na versão 3.1 da especi�cação Enterprise Java Beans, a ideia fundamental
deste tipo de componente é o compartilhamento de dados transientes entre todos
os usuários de uma aplicação. Um exemplo típico seria um contador para o
número de usuários conectados na aplicação cujo possível código está
demonstrado na Figura 133.
Para que este código contabilize corretamente o número de usuários conectados,
deve ser mantida uma única instância deste EJB.
FIGURA 133 – CÓDIGO FONTE PARA A CRIAÇÃO DO DATATABLE
Unidade 3 - Tópico 2 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
8 of 15 26/06/2024, 16:25
Os próximos passos seriam a implementação dos métodos propriamente ditos
dentro de uma classe java que serviria como o Singleton Session Bean, a de�nição
de que o mesmo seria um singleton, através da anotação @Singleton e, �nalmente,
a especi�cação do tipo de acesso deste bean através da anotação @Local ou
@Remote. Caso o acesso ao Singleton Session Bean seja local, basta anotá-lo com
o @Singleton.
44..11 CCIICCLLOO DDEE VVIIDDAA
De forma análoga aos session beans já estudados nesta unidade, os singleton
session beans tem seu ciclo de vida gerenciado pelo EJB Container (parte
integrante do AS... não esqueça). O singleton session bean possui dois estados:
NÃO EXISTE e PRONTO.
As variações entre estes estados são descritas abaixo, conforme K19 (2015):
NÃO EXISTE -> PRONTO
Antes de ser criada, dizemos que uma instância de um Singleton Session Bean se
encontra no estado NÃO EXISTE. Neste estado, uma instância não pode atender às
chamadas dos clientes da aplicação. O EJB Container cria apenas uma instância
para cada Singleton Session Bean. Por padrão, o EJB Container é quem decide
quando a criação da instância de um Singleton Session Bean deve ser realizada,
apesar de ser possível determinar que essa criação seja realizada na inicialização
da aplicação através da anotação @Startup (Figura 135).
FIGURA 135 – ANOTAÇÃO @STARTUP
Unidade 3 - Tópico 2 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
10 of 15 26/06/2024, 16:25
RREESSUUMMOO DDOO TTÓÓPPIICCOO
• Os statefull session beans possuem praticamente as mesmas funcionalidades
dos stateless session beans, entretanto, são caracterizados pela manutenção
do estado conversacional.
FONTE: K19 (2015)
Os callbacks @PostConstruct e @PreDestroy também estão disponíveis para
os Singleton Session Beans através das anotações respectivas.
NNeessttee ttóóppiiccoo vvooccêê vviiuu:
Unidade 3 - Tópico 2 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
12 of 15 26/06/2024, 16:25
Responder
Responder
2  Faça uma implementação de singleton session bean, que permita contar o
número de usuários simultâneos de sua loja virtual.
3  Descreva detalhadamente o ciclo de vida de um statefull session bean.
Unidade 3 - Tópico 2 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
14 of 15 26/06/2024, 16:25

Mais conteúdos dessa disciplina