Baixar - Unipar

Propaganda
DESENVOLVIMENTO WEB COM JSF E OS ESCOPOS
VIEW, REQUEST, SESSION, APPLICATION E
CONTROLE DE TRANSAÇÕES COM EJB
Vinicios Fernandes de Lima¹, Willian Barbosa Magalhães¹
¹Universidade Paranaense (Unipar)
Paranavaí – PR – Brasil
[email protected]
[email protected]
Resumo. O presente trabalho aborda as tecnologias utilizadas na produção de
softwares para a WEB, com o objetivo de proporcionar uma visão do
desenvolvimento ágil e produtivo utilizando a tecnologia Java juntamente com
o framework JSF (Java Server Faces) e EJB (Enterprise Java Beans),
apresentando os escopos view, request, session e application do JSF. Para tal
foi realizada uma pesquisa utilizando-se de livros, artigos, apostilas e sites da
internet. Com o desenvolvimento do trabalho foi possível observar que o
framework JSF, é uma ferramenta robusta proporcionando um
desenvolvimento mais ágil e garantido um maior gerenciamento da aplicação.
1. Introdução
Desenvolver aplicações WEB (World Wide Web) utilizando a tecnologia Java não é
uma tarefa fácil, entretanto há um suporte muito grande, onde muitos profissionais
criam bibliotecas chamadas de frameworks que auxiliam o desenvolvimento com a
tecnologia.
Atualmente frameworks são indispensáveis para o desenvolvimento de uma
aplicação de pequeno, médio ou grande porte, contribuindo principalmente para uma
maior produtividade e consistência da estrutura da aplicação, implicando em um
produto de alta qualidade para o usuário final. A maioria dos frameworks utiliza como
padrão de desenvolvimento o MVC (model – view - controller).
O MVC é um conceito de engenharia de software, que recomenda a divisão de
um software em três partes diferentes. O model que está associado ao trabalho atual que
a aplicação administra, regra de negócio, lógica e funções. A view, é coesa a exibir os
dados ou informações, saída de dados para tela, e o controller está designado a controlar
as duas camadas anteriores exibindo a interface correta ou executando algum trabalho
complementar [Gonsalves, 2007].
2. Metodologia
Este artigo foi desenvolvido por meio de consultas realizadas em sites, livros, artigos, e
apostilas disponibilizadas na internet.
3. Desenvolvimento
3.1 Java Server Faces
Java Server Faces é o framework proeminente em termos de programação em Java
server-side (lado do servidor), cumprindo boa parte das suas promessas, desenvolvendo
aplicações mais robustas e flexíveis sem misturar o código de modelo com o de visão.
Com uma gama de componentes extensíveis tornando possível o uso de novas
tecnologias [Geary, 2007].
O framework incorpora características MVC para WEB e de um modelo de
interfaces gráficas baseado em eventos. Por basear-se no padrão de projeto MVC, uma
de suas principais vantagens é a clara divisão entre a visualização e regras de negócio.
A característica do MVC é repartir a aplicação em três camadas: model, view e
controller: [Pitanga, 2004].
Model é responsável por representar os objetos de negócio, manter o estado da
aplicação e fornecendo ao controlador o acesso aos dados. A visualização representa a
interface com o usuário, sendo responsável por definir a forma como os dados serão
apresentados e encaminhar as ações dos usuários para o controlador. Já a camada de
controle é responsável por realizar a ligação entre o modelo e a visualização, além de
decifrar as ações e as traduzir para uma operação sobre o modelo, onde são realizadas
mudanças e, então, gerar uma visualização apropriada [Pitanga, 2004].
O controller é composto por um servlet denominado FacesServlet, por arquivos
de configuração e por um conjunto de manipuladores de ações e observadores de
eventos. O FacesServlet é responsável por receber requisições da WEB, redirecioná-las
para o model e então remeter uma resposta. Os arquivos de configuração são
responsáveis por realizar associações e mapeamentos de ações e pela definição de regras
de navegação. Os manipuladores de eventos possuem a finalidade de receber os dados
da camada de visualização, acessar o modelo, e então devolver o resultado para o
FacesServlet [Pitanga, 2004].
Finalmente, a view é composta por component trees (hierarquia de componentes
UI), tornando possível unir um componente ao outro para formar interfaces mais
complexas, responsável pela entrada e saída das informações do software [Pitanga,
2004].
A Figura 1 a seguir mostra a arquitetura do Java Server Faces baseada no
modelo MVC.
Figura 1 - Arquitetura JSF baseada no modelo MVC
Fonte: [Pitanga, 2004 p.2].
3.2. Escopos
Os managed beans são objetos básicos de uma aplicação JSF. Suas principais tarefas
são fornecer dados que serão exibidos nas telas, receber os dados enviados nas
requisições e executar tarefas de acordo com as ações dos usuários [K19, 2013].
Um managed bean pode ser definido de duas maneiras. A primeira maneira é
criar uma classe Java e registrá-la no arquivo faces-config.xml.
A segunda forma é criar uma classe Java com a anotação @ManagedBean do
pacote javax.faces.bean. Essa anotação só pode ser utilizada a partir da versão 2.0 do
JSF, é a mais utilizada atualmente [K19, 2013].
Utilizando a anotação @ManagedBean por padrão o JSF assumirá que o nome
do managed bean é o nome da classe com a primeira letra minúscula, além disso, o
escopo request será assumido como padrão, entretanto o tempo de vida de uma
instância afeta principalmente a durabilidade dos dados que ela armazena, por isso
podemos escolher qual o tipo de escopo utilizar em cada managed bean.
A seguir será realizada uma breve abordagem dos escopos request, view, session
e application.
3.2.1 Request
No escopo request, as instâncias dos managed beans são criadas durante o
processamento de uma requisição assim que forem necessárias e descartadas no final
desse mesmo processamento. Desta forma os dados não são mantidos de uma requisição
para outra [K19, 2013].
O JSF utiliza como padrão o escopo request quando managed beans são
registrados usando essa anotação. Mesmo sendo o padrão, podemos deixar explícita a
escolha do escopo request através da anotação @RequestScoped.
A Figura 2 mostra como funciona o escopo request.
Figura 2 - Representação gráfica do escopo request
Fonte: [K19, 2013 p.150].
3.2.2 View
O escopo view foi adicionado no JSF 2.0 com a ideia de manter determinados dados
enquanto o usuário não trocar de tela. As instâncias dos managed beans em escopo view
são eliminadas somente quando há uma navegação entre telas [K19, 2013].
Para escolha do escopo view, deve-se utilizar a anotação @ViewScoped ou a tag
managed-bean-scope para alterar do escopo request que é padrão.
A Figura 3 representa como funciona o escopo view.
Figura 3 - Representação gráfica do escopo view
Fonte: [K19, 2013 p.151].
3.2.3 Session
Algumas informações devem ser mantidas durante as requisições de um determinado
usuário. Por exemplo, considere uma aplicação que utiliza compra on-line como
carrinho de compras.
Um usuário faz diversas requisições para escolher os produtos e colocá-los no
carrinho. Durante todo esse tempo, a aplicação deve guardar a informação de quais
produtos já foram escolhidos.
Por esses casos que apareceu o escopo session, onde cada usuário possui um
espaço na memória do servidor que é chamado de sessão. Tecnicamente, é possível
existir duas ou mais sessões de um mesmo usuário, por exemplo, se ele estiver
utilizando dois ou mais navegadores [K19, 2013].
Nos managed beans definidos com o escopo de session as instâncias são criadas
quando necessárias durante o processamento de uma requisição e armazenadas na
sessão do usuário que fez a requisição [K19, 2013].
As instâncias criadas por esse escopo são eliminadas em duas ocasiões: quando a
própria aplicação decide por algum motivo específico apagar a session de um usuário
(logout) ou o servidor decide apagar a session de um usuário quando esse usuário não
faz requisições por um determinado tempo [K19, 2013].
3.2.4 Application
Quando configurados com o escopo application, as instâncias dos managed beans são
construídas no primeiro momento que são usadas e mantidas até a finalização da
aplicação [K19, 2013].
Ao oposto dos escopos exemplificados anteriormente, as instâncias dos
managed beans anotados com escopo application são compartilhadas na aplicação por
todos os usuários. O JSF constrói somente uma instância de cada managed bean em
escopo de application [K19, 2013].
Para utilização do escopo application, deve-se utilizar
@ApplicationScoped ou a tag managed-bean-scope [K19, 2013].
a
anotação
Por padrão quando é utilizado application, a instância do managed bean é criada
no momento que é utilizada pela primeira vez. Pode-se alterar o comportamento
adicionando a propriedade eager na anotação @ManagedBean [K19, 2013].
3.3 Controle de Transações com Enterprise JavaBeans
Enterprise Java Bean (EJB) é a tecnologia Java padronizada para a criação de
componentes em uma arquitetura distribuída, escalável, confiável e robusta. Em uma
aplicação várias camadas com esse tipo de necessidade arquitetural, comumente utilizase EJBs para a camada de negócios. Para executar uma aplicação que emprega EJBs é
necessário um servidor de aplicação, o qual é chamado de contêiner [Devmedia, 2013].
Enterprise Java Beans possui dois componentes para apresentar os serviços ao
cliente, são o Session Bean Stateless e o Session Bean Stateful [Devmedia, 2013].
Session Bean Stateless normalmente destinam-se a executar operações
individuais não guardando o estado para cada chamada do método. Não é especifico do
cliente e em qualquer momento pode ser usado uma instância de um Stateless Session
Bean. Não é um tipo de sessão pesada, pois o servidor de aplicação mantem algumas
instâncias preparadas para receber requisições de seus clientes [Devmedia, 2013].
Session Bean Stateful ao contrario do Stateless esse tipo de sessão foi
desenvolvida para ser utilizada especificadamente pelo cliente.
Sua principal característica é guardar as operações realizadas enquanto a sessão
do cliente estiver ativa. Esse modelo de escopo por ser mais robusto e utilizar mais
recursos do servidor, possui uma pequena desvantagem em relação ao Stateless por ser
um pouco mais lento, geralmente utilizados para desenvolver carrinhos de compra.
4. Considerações finais
O framework JSF além de agilizar o processo de desenvolvimento, contribui
para que hajam aplicativos com camadas mais bem definidas e distribuídas, facilitando
o entendimento, manutenção do projeto e aumentado a qualidade do produto final.
Também foram apresentados os escopos disponíveis no JSF, onde foi possível
observar que é necessário tomar cuidado na escolha, pois esta escolha influencia
diretamente na performance do sistema. Vale lembrar ainda que existem diversos outros
frameworks disponíveis para facilitar o desenvolvimento de aplicativos, porém JSF é o
que se destaca no mercado.
Referências
Gonsalves, Edson (2007). Desenvolvendo Aplicações Web com JSP, Servlets, Java
Server Faces, Hibernate, EJB 3 Persistence e Ajax. Rio de Janeiro. Ciência Moderna
Ltda.
Gonsalves, Edson (2008). Dominando JavaServer Faces e Facelets Utilizando
Spring 2.5, Hibernate e JPA. Rio de Janeiro. Ciência Moderna Ltda.
Geary, David (2007). Core JavaServe Faces. Rio de janeiro. Alta Books.
Pitanga, Talita. JavaServer Faces a mais nova tecnologia para desenvolvimento
web. Disponível em:< www.guj.com.br/content/articles/jsf/jsf.pdf > Acesso em: 23
abril de 2013.
K19 (s.d.). Desenvolvimento Web com JSF2 e JPA2. Disponível em:
<http://www.k19.com.br/cursos/desenvolvimento-web-com-jsf2-e-jpa2> Acesso em: 26
abril 2013.
Devmedia (s.d.). Java Magazine 74 - Enterprise Java Beans 3.1.
<http://www.devmedia.com.br/artigo-java-magazine-74-enterprise-java-beans-31/15013> Acesso em: 27 maio de 2013.
Download