Buscar

Livro Digital - Programação para Web II3456

Prévia do material em texto

declarativa. Os desenvolvedores das aplicações não precisam implementar a
lógica de segurança pois ela faz parte da arquitetura.
• RReemmoottaabbiilliiddaaddee: Aplicações EJB podem ser acessadas remotamente através
de diversos protocolos de comunicação. Consequentemente, é possível
desenvolver aplicações clientes de diversos tipos.
• MMuullttiitthhrreeaaddiinngg ee CCoonnccoorrrrêênncciiaa: A arquitetura EJB permite que as aplicações
sejam acessadas por múltiplos usuários simultaneamente de maneira
controlada. A concorrência é controlada pelo AS.
• PPeerrssiissttêênncciiaa: Persistência através da especi�cação JPA.
• GGeerreenncciiaammeennttoo ddee OObbjjeettooss: Mecanismos de injeção de dependências e
controle de ciclo de vida são oferecidos aos objetos de uma aplicação EJB. A
escalabilidade de uma aplicação é garantida através deste mecanismo.
• IInntteeggrraaççããoo: A arquitetura EJB é fortemente integrada com os componentes
da plataforma Java EE.
22 SSTTAATTEELLEESSSS SSEESSSSIIOONN BBEEAANNSS
Um objeto é geralmente composto de estado e comportamento, entretanto, em
muitas situações encontramos procedimentos, regras de negócio e �uxos que
representam somente um comportamento e não precisam de estado. Você já está
familiarizado com esse conceito ao utilizar algumas classes da plataforma Java que
possuem métodos estáticos. Um exemplo é demonstrado na �gura a seguir, onde
se pode perceber que a classe Integer não precisa de instanciação e não possui
estado. Ao solicitar que a String seja convertida para um inteiro, basta chamar o
método estático que o mesmo retornará o resultado, sem que o objeto mantenha
estado.
FIGURA 114 – MÉTODOS ESTÁTICOS
Unidade 3 - Tópico 1 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
2 of 17 26/06/2024, 16:27
FONTE: Adaptado de K19 (2015)
Os métodos dentro desta interface são chamados de métodos de negócio. O
próximo passo seria a implementação dos métodos de negócio propriamente ditos
e a de�nição das características do stateless session bean através de annotations,
conforme a �gura que segue.
É importante perceber que nem toda a aplicação se bene�cia destas
facilidades oferecidas pelo AS. Remotabilidade, concorrência e transações
distribuídas podem ser úteis em alguns cenários, mas a complexidade da
con�guração e de�nição destes serviços no AS pode não compensar sua
utilização em cenários mais simples.
FIGURA 116 – STATELESS SESSION BEAN
Unidade 3 - Tópico 1 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
4 of 17 26/06/2024, 16:27
FIGURA 117 – STATELESS SESSION BEAN REMOTO
FONTE: Adaptado de K19 (2015)
22..22 EEJJBB 33..11
Na versão 3.1, quando o acesso ao stateless session bean é local, não é mais
necessário de�nir a interface nem utilizar a anotação @Local, bastando anotar
uma classe com @Stateless, conforme a �gura a seguir.
FIGURA 118 – STATELESS SESSION BEAN, VERSÃO 3.1
Unidade 3 - Tópico 1 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
6 of 17 26/06/2024, 16:27
FONTE: Adaptado de K19 (2015)
Agora é hora de paramos um pouco para entender o que aconteceu. A linha 16
traz a anotação que de�ne a URL de seu servlet, cuja função, essencialmente é
receber dois doublés como parâmetro via request (a e b) para então exibir um
html com o resultado da operação de soma. O detalhe interessante é que na linha
20 anotamos o tipo Calculadora como um EJB. Mas por que de�nimos como
calculadora ao invés de calculadora Bean? Vou esperar 30 segundos para lhe dar a
resposta. Vá em frente... pense e responda que eu aguardo.
É isso mesmo! De�nimos como Calculadora porque a Calculadora Bean
implementa a interface Calculadora e, esta é uma boa prática, como você já viu em
disciplinas anteriores.
Voltando ao EJB, a anotação utilizada faz com que o ciclo de vida deste objeto seja
completamente gerenciado pelo AS. Sua criação, utilização e destruição não é
responsabilidade do desenvolvedor, que pode gastar seu tempo com coisas mais
úteis, como por exemplo, implementar regras de negócio ou jogar Playstation 4.
Uma característica bastante interessante é que, digamos que cada instância da
calculadora pode atender a um usuário de cada vez e, ocorra que 11 usuários
estejam tentando acessar seu importante serviço de cálculo ao mesmo tempo. O
Unidade 3 - Tópico 1 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
8 of 17 26/06/2024, 16:27
Até agora trabalhamos somente com os stateless session beans sendo acessados
localmente por aplicações web e através da anotação @EJB. Isso ocorre somente
quando o EJB é instalado no mesmo AS onde seus acessos são feitos, ou seja, a
aplicação que faz chamadas ao componente deve estar no mesmo AS.
Quando o acesso é remoto, em outro servidor de aplicação, não dispomos do
recurso de injeção de dependência. Por este motivo, todo stateless session bean
implantado em um servidor de aplicação deve receber um nome único, que é
utilizado para se obter a referência remota a este componente.
Conforme K19 (2015), antes da versão 3.1, os nomes dos sessions beans não
seguiam nenhum padrão, o que di�cultava o desenvolvimento em servidores de
aplicação distintos. A partir da versão 3.1 os nomes são padronizados e, portanto,
portáveis entre os servidores de aplicação. Uma aplicação remota deve acessar o
serviço de nomes (JNDI) do AS no qual o EJB que ela deseja utilizar está implantado,
conforme a Figura 121. Uma vez com a referência do stateless session bean, o
acesso remoto ocorre exatamente como o local, de forma transparente para a
aplicação. Logicamente, como o acesso ocorre em outro servidor, o tempo de
resposta geralmente é mais lento.
As regras para nomenclatura podem ser acessadas em: <jjccpp..oorrgg//eenn//jjssrr//ddeettaa
iill??iidd==331188>.
FIGURA 121 – LOOKUP DO NOME DO EJB
2.4 CICLO DE VIDA
22..44 CCIICCLLOO DDEE VVIIDDAA
Unidade 3 - Tópico 1 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
10 of 17 26/06/2024, 16:27
https://jcp.org/en/jsr/detail?id=318
https://jcp.org/en/jsr/detail?id=318
https://jcp.org/en/jsr/detail?id=318
https://jcp.org/en/jsr/detail?id=318
de aplicação, o EJB Container pode destruir instâncias que estejam no estado
PRONTO, levando-as ao estado NÃO EXISTE.
22..55 EESSCCAALLAABBIILLIIDDAADDEE,, PPOOOOLL EE CCAALLLL--BBAACCKKSS
K19 (2015) coloca que as características dos stateless session beans favorecem a
escalabilidade da aplicação pois, de acordo com a demanda, o EJB Container cria
novas instâncias e cada instância pode atender vários clientes.
O EJB Container administra as instâncias criadas através de um Pool. Cada servidor
de aplicação oferece con�gurações especí�cas para melhorar a e�ciência no
atendimento das chamadas. Por exemplo, o Glass�sh permite que uma
quantidade máxima de instâncias de um determinado stateless session beans seja
de�nida pela aplicação (K19, 2015).
Através dos call-backs podemos associar algoritmos nas transições de estado dos
stateless session beans. Isso ocorre através de anotações de�nidas para esta
�nalidade, conforme demonstrado nas Figuras 122 e 123.
FIGURA 122 – ANOTAÇÃO @POSTCONSTRUCT
Unidade 3 - Tópico 1 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
12 of 17 26/06/2024, 16:27
método assíncrono para agendar a entrega. Neste contexto, assíncrono signi�ca
que será atendido em algum momento próximo. Em geral, o servidor de aplicação
coloca a execução destes métodos em pilhas e os executa em sequência. Observe
que isto não signi�ca um atraso de dias ou semanas na execução, mas sim de
minutos.
Nem todas as operações podem ou devem ser colocadas para executar de
formaassíncrona. O modelo de negócios deve ser avaliado para ver se
permite este tipo de �exibilidade.
Para utilizarmos os métodos assíncronos, basta anotar a classe ou o(s) método(s)
que deve(m) ser de�nido(s) como assíncrono(s) através da anotação
@Asynchronous (Figura 124). Podemos observar que o retorno dos métodos
assíncronos é feito através da interface Future, pertencente ao pacote
jjaavvaa..uuttiill..ccoonnccuurrrreenntt. Através desta interface é possível veri�car se a tarefa já foi
concluída pelo método isDone() e também recuperar o resultado através do
método get().
FIGURA 124 – MÉTODOS ASSÍNCRONOS
FONTE: Adaptado de K19 (2015)
Unidade 3 - Tópico 1 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
14 of 17 26/06/2024, 16:27
Responder
Responder
2  Faça o mesmo que foi solicitado na questão 1, utilizando JSF. Você deve
implementar a interface através de um xhtml e o managed bean que fará a
interação com o stateless session bean.
3  Descreva detalhadamente o ciclo de vida de um stateless session bean.
Unidade 3 - Tópico 1 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
16 of 17 26/06/2024, 16:27

Mais conteúdos dessa disciplina