Buscar

Livro Digital - Programação para Web II2563

Prévia do material em texto

• TTrraannssaaççõõeess: A arquitetura EJB de�ne um suporte para utilização de
transações. Esse suporte é integrado com a Java Transaction API (JTA),
incluindo a possibilidade de realizar transações distribuídas.
• SSeegguurraannççaa: Suporte para realizar autenticação e autorização de forma
ENTERPRISE JAVA BEANS (EJB) E
CONTEXT AND DEPENDENCY INJECTION
(CDI)
UNIDADE 3
SSTTAATTEELLEESSSS SSEESSSSIIOONN BBEEAANNSS
TTÓÓPPIICCOO 11
11 IINNTTRROODDUUÇÇÃÃOO
Nas tecnologias da família EJB é que percebemos a verdadeira extensão das
capacidades do JAVAEE.
Conforme K19 (2015), muitos sistemas corporativos são desenvolvidos seguindo a
arquitetura de�nida pelo padrão EJB. Ao utilizar esta arquitetura, alguns recursos
são disponibilizados automaticamente pelo AS. Entre estes recursos, podemos
destacar:
Unidade 3 - Tópico 1 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
1 of 17 26/06/2024, 16:28
FONTE: O autor
Para exempli�car, vamos considerar um sistema bancário, onde os empréstimos,
transferências, saques, depósitos, cobranças etc. são as regras de negócio. Cada
aplicação possui suas próprias regras de negócio, consequência do ramo de
atuação e do contexto da mesma.
Ao utilizar a arquitetura EJB para implementar estas regras de negócio, cada regra
ou conjunto de regras é implementada em componentes especí�cos, conhecidos
como stateless session beans, cuja principal característica é a não manutenção de
estado conversacional.
22..11 EEJJBB 33..00
Conforme K19 (2015), o primeiro passo para implementar um stateless session
bean é de�nir os métodos de negócio através de uma interface. Considerando um
componente para a realização de operações matemáticas, uma possível interface é
demonstrada na �gura a seguir.
FIGURA 115 – INTERFACE DE NEGÓCIOS
Unidade 3 - Tópico 1 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
3 of 17 26/06/2024, 16:28
FONTE: Adaptado de K19 (2015)
Como esta classe implementa a interface Calculadora, somos obrigados a fornecer
implementação para todos os métodos que nela forem de�nidos, conforme pode
ser observado nos métodos soma, subtrai, multiplica e divide (linhas 13 a 27). As
anotações de�nidas nas linhas 10 e 11 é que caracterizam a classe como um
stateless session bean. A anotação @Stateless especi�ca a característica de não
manutenção de estado conversacional, enquanto a anotação @Local de�ne que
este é um EJB local que implementa os métodos de negócio de Calculadora.class.
Um stateless session bean pode implementar várias interfaces, porém, apenas os
métodos das interfaces que estiverem dentro da anotação são considerados como
métodos de negócio.
Caso o stateless session bean deve ser utilizado também na forma remota, a
anotação muda, conforme pode ser visto na �gura a seguir. Ao marcá-lo desta
forma, estamos permitindo que a aplicação possa ser colocada em instâncias
diferentes do AS. Em termos práticos, essa prática auxilia a colocação de uma
aplicação na nuvem, pois a escalabilidade é atingida de forma transparente para o
desenvolvedor. Uma instância do AS pode �car em uma máquina e ser
responsável pela interface web e mobile em android ou html, enquanto outra
instância mantém os ejb e uma terceira máquina poderia ser responsável pelo
banco de dados.
Unidade 3 - Tópico 1 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
5 of 17 26/06/2024, 16:28
FONTE: Adaptado de K19 (2015)
22..33 TTEESSTTAANNDDOO OO EEJJBB
Considerando que os stateless session beans são utilizados para a implementação
das regras de negócio que não necessitam de estado conversacional, precisaremos
de uma interface para testá-los.
Para simpli�car o acesso ao EJB, faremos seu acesso através de servlets. Nosso
stateless session bean pode ser injetado em um servlet através da anotação @EJB.
A �gura a seguir traz a implementação do servlet propriamente dito.
Apesar dos servlets não fazerem parte do escopo deste caderno, eles são
extremamente importantes no ecossistema JAVAEE. Maiores detalhes sobre
os servlets podem ser acessados em: <ccaaeelluumm..ccoomm..bbrr//aappoossttiillaa--jjaavvaa--wweebb//ssee
rrvvlleettss//>.
FIGURA 119 – MENSAGENS DE VALIDAÇÃO
Unidade 3 - Tópico 1 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
7 of 17 26/06/2024, 16:28
https://www.caelum.com.br/apostila-java-web/servlets/
https://www.caelum.com.br/apostila-java-web/servlets/
https://www.caelum.com.br/apostila-java-web/servlets/
https://www.caelum.com.br/apostila-java-web/servlets/
que acontece? O AS automaticamente instância um novo objeto para atender a
estes 10 usuários. Isso pode ser con�gurado no AS, de forma que sua classe
atenda mais ou menos do que 10 usuários simultâneos, bem como o número de
instâncias que serão geradas.
Outra característica relevante é que tudo isto faz parte da especi�cação, ou seja, se
você escolher GlassFish, Wild�y, WebLogic ou qualquer outro servidor de aplicação
que obedeça à especi�cação EJB, esta característica de controle do ciclo de vida
vem embutida. Se você achou isso legal, espere até chegarmos no CDI.
Os EJB são desconectados da interface grá�ca e da persistência (a�nal, podemos
utilizar JPA), o que permite que ao invés de HTML puro com um servlet, criemos
um JSF conectado a um Managed Bean que declara o EJB, conforme ilustrado na
�gura a seguir.
FIGURA 120 – MANAGED BEAN INJETANDO O EJB
FONTE: Adaptado de K19 (2015)
Na linha 6 está a anotação @Named, que faz o bind entre o arquivo JSF e managed
bean. Na linha 9, da mesma forma que no servlet, injetamos a calculadora com a
anotação EJB. O restante do comportamento é o mesmo que foi exempli�cado
anteriormente.
Unidade 3 - Tópico 1 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
9 of 17 26/06/2024, 16:28
1. Uma única instância de um SLSB pode atender às chamadas de diversos
clientes.
2. Uma instância de um SLSB não atende a duas chamadas ao mesmo tempo.
3. O EJB Container pode criar várias instâncias do mesmo SLSB para atender
mais rapidamente às chamadas dos clientes.
As instâncias dos stateless session beans são administradas pelo EJB Container
dentro do servidor de aplicação. Devemos entender o ciclo de vida desses objetos
para utilizar corretamente a tecnologia EJB. Três aspectos fundamentais dos
stateless session beans ajudam a entender o ciclo de vida das instâncias (K19,
2015).
O ciclo de vida das instâncias de um stateless session bean possui apenas dois
estados: NÃO EXISTE e PRONTO onde as variações de estado são as seguintes (K19,
2015):
NNÃÃOO EEXXIISSTTEE -->> PPRROONNTTOO
Antes de ser criada, dizemos que uma instância de um SLSB se encontra no estado
NÃO EXISTE. Neste estado, uma instância não pode atender a chamadas dos
clientes. De acordo com a quantidade de chamadas e critérios de cada servidor de
aplicação, o EJB Container pode criar novas instâncias de um SLSB. Cada instância
criada passa para o estado PRONTO, onde pode começar a receber chamadas.
PPRROONNTTOO -->> PPRROONNTTOO
Quando uma chamada é realizada, o EJB Container seleciona uma instância entre
as que estejam no estado PRONTO para realizar o atendimento. Enquanto uma
instância está atendendo a uma chamada ela não pode atender a outras
chamadas. Depois de �nalizar o atendimento, a instância volta para o estado
PRONTO podendo receber outras chamadas.
PPRROONNTTOO -->> NNÃÃOO EEXXIISSTTEE
Novamente, de acordo com a quantidade de chamadas e critérios de cada servidor
Unidade 3 - Tópico 1 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
11 of 17 26/06/2024, 16:28
FONTE: Adaptado de K19 (2015)
FIGURA 123 – ANOTAÇÃO @PREDESTROY
FONTE:Adaptado de K19 (2015)
Na linha 15 da Figura 122, colocamos a anotação @PostConstruct. Como o nome
indica, o objetivo desta anotação é fazer com que este método execute quando
uma nova instância é criada. Já na linha 32 da Figura 123, o objetivo da anotação
@PreDestroy é executar o que estiver de�nido no método logo antes da instância
ser destruída pelo AS. Ambas as anotações somente podem ser colocadas antes de
métodos.
22..66 MMÉÉTTOODDOOSS AASSSSÍÍNNCCRROONNOOSS
A partir da versão 3.1 dos EJBs, é possível de�nir métodos assíncronos. Tais
métodos são utilizados para implementar tarefas longas que não podem bloquear
o resto da aplicação até que sejam encerradas. Por exemplo, um processo de
compra on-line possui alguns passos que não podem ser assíncronos como a
seleção dos produtos, o fechamento da conta e o processo de pagamento. Já a
comunicação do sistema de compra com a parte de logística não precisa ser
síncrona. É possível, após a realização da compra de um produto, chamar um
Unidade 3 - Tópico 1 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
13 of 17 26/06/2024, 16:28
RREESSUUMMOO DDOO TTÓÓPPIICCOO
• Muitos sistemas corporativos são desenvolvidos seguindo a arquitetura
de�nida pelo padrão EJB. Ao utilizar esta arquitetura, alguns recursos são
disponibilizados automaticamente pelo servidor de aplicação.
• Os dois principais tipos de EJB são os stateless session beans e os statefull
session beans.
• Transações, segurança, remotabilidade e concorrência são alguns dos
recursos disponibilizados automaticamente pelo servidor de aplicação.
• A principal característica dos stateless session beans é a não manutenção de
estado conversacional.
• Os stateless session beans podem ser locais ou remotos.
• Os EJBs podem ser injetados em aplicações web, independentemente de se
utilizar Servlets ou Managed Beans no back end.
AAUUTTOOAATTIIVVIIDDAADDEESS
NNeessttee ttóóppiiccoo vvooccêê vviiuu qquuee: 
Unidade 3 - Tópico 1
1  Implemente uma interface web para a calculadora do exemplo utilizando html. A
interface deve permitir a utilização de todas as operações.
Unidade 3 - Tópico 1 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
15 of 17 26/06/2024, 16:28
Responder
Unidade 2  Tópico 2
Conteúdo escrito por:
Todos os direitos reservados © Prof. Cristiano Roberto Franco
Unidade 3 - Tópico 1 
Livro Digital - Programação para Web II https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii...
17 of 17 26/06/2024, 16:28
https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii/unidade2.html?topico=2
https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii/unidade2.html?topico=2
https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii/unidade2.html?topico=2
https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii/unidade2.html?topico=2
https://livrodigital.uniasselvi.com.br/ADS27_programacao_para_web_ii/unidade2.html?topico=2

Mais conteúdos dessa disciplina