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