Padrões J2EE: Um exemplo de uso                 Erivan de Sena Ramos1, Pedro Henrique Pereira1                      1     ...
Júnior (2003) indica ainda que dessa forma, uma das grandes vantagens daPlataforma J2EE é que as aplicações podem acessar ...
d) facilitam o aprendizado: reduzem o tempo de aprendizado de umadeterminada biblioteca de classes. Isto é fundamental par...
3.1. Diagramas de Classes
3.1.1 Pacote Web       Este pacote contém a implementação de um Intercepting Filter, que verifica acada solicitação se o u...
3.1.2 Pacote Cliente       Este pacote contem os Business Delegate, que são classes que representam osobjetos de negócio d...
3.1.3 Pacote EJB        Este pacote contém os session beans que formam a camada de Session Facadedo sistema.     a) AlunoS...
5. ReferênciasAlur, Deepak; Crupi, John; Malks, Dan. Core J2EE Patterns: as melhores práticas  eestratégias de design. Rio...
Upcoming SlideShare
Loading in …5
×

Artigo Padrões J2EE: Um exemplo de uso

1,054 views

Published on

Este trabalho apresenta um exemplo de uso dos Padrões J2EE em
um projeto de software, identificando as melhorias no desenvolvimento e na
implementação de um software com a utilização das boas práticas J2EE
Blueprints, destacando a modelagem de um sistema que utiliza essa
plataforma.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,054
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
24
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Artigo Padrões J2EE: Um exemplo de uso

  1. 1. Padrões J2EE: Um exemplo de uso Erivan de Sena Ramos1, Pedro Henrique Pereira1 1 Universidade Estadual do Ceará (UECE) Fortaleza – CE – Brasil erivansr@gmail.com, pedrohenripereira@gmail.com Abstract. This paper presents an example of using J2EE patterns in a software project, identifying the improvements in the development and implementation of software using the of good J2EE Blueprints, featuring a modeling system that uses this platform. Resumo. Este trabalho apresenta um exemplo de uso dos Padrões J2EE em um projeto de software, identificando as melhorias no desenvolvimento e na implementação de um software com a utilização das boas práticas J2EE Blueprints, destacando a modelagem de um sistema que utiliza essa plataforma.1. Introdução A Sun Microsystems (2011) apresenta o Java 2 Enterprise Edition (J2EE), comouma plataforma que define um padrão para o desenvolvimento de aplicaçõesempresariais distribuídas e multicamadas. O J2EE estabeleceu um novo modelo para odesenvolvimento de aplicações distribuídas. O modelo é baseado em componentes bemdefinidos. Este modelo é destinado tanto para padronizar, quanto para simplificar osdiversos tipos de aplicações distribuídas existentes atualmente. Marinescu (2002) indica que, sem um conjunto de boas práticas de modelagem,o desenvolvimento utilizando a arquitetura multicamadas J2EE pode se tornar muitodifícil. Alur et al. (2002) complementa que uma boa maneira de adquirir experiência emprojeto é pela utilização de padrões que se constituem em um moderno e importantemecanismo para a elaboração de projetos orientados a objetos. Este trabalho apresenta a arquitetura do sistema de uma Auto-Escola, utilizandouma arquitetura multicamadas baseado no J2EE, descrevendo e justificando aaplicabilidade de quatro padrões, englobando as três camadas de uma aplicação web, deacordo com as boas práticas J2EE Blueprints (apresentação, negócio e integração). Cadapadrão segue a estratégia aplicada, incluindo diagrama de classes e trecho do códigofonte do exemplo.2. Plataforma Java 2 Enterprise Edition (J2EE) Júnior (2003) leciona que a Plataforma J2EE é um conjunto de especificaçõespara acesso a diversos serviços de infraestrutura, tais como segurança, distribuição deprocessamento, controle de transações, comunicação entre camadas e outros. Estasespecificações são implementadas por diversos fornecedores, que competem entre sipara oferecer serviços de melhor qualidade e preços mais competitivos.
  2. 2. Júnior (2003) indica ainda que dessa forma, uma das grandes vantagens daPlataforma J2EE é que as aplicações podem acessar os serviços oferecidos de formaindependente de fornecedor. As organizações que adotam esta plataforma possuemconsiderável liberdade de escolha, podendo determinar o fornecedor mais adequado paraa sua situação. Além disto, os desenvolvedores podem concentrar esforços na lógicaespecífica do negócio, pois as funções de infraestrutura são disponibilizadas pelaPlataforma J2EE, potencialmente gerando ganhos de produtividade consideráveis. AFigura 1 ilustra o conceito. Figura 1. Plataforma J2EE (JÚNIOR, 2003) As aplicações acessam serviços como controle de transações ou acesso remotoatravés das especificações contidas na Plataforma J2EE, implementadas por algumfornecedor. A implementação da plataforma, no entanto, pode ser trocada semsignificativas alterações do código das aplicações, já que todo o acesso àsfuncionalidades da plataforma é feito através de especificações padronizadas.2. J2EE Blueprints O J2EE é um conjunto de procedimentos recomendados para desenvolveraplicações J2EE, e divide as aplicações em camadas. Os padrões J2EE representamsoluções consideradas melhores práticas para implementar vários componentesessenciais em cada uma das camadas identificadas pelo J2EE Blueprints. Os padrões sãodispostos em três camadas: Apresentação, Negócios e Integração. Schneide (1999) indica que em termos de orientação a objetos, a utilização depadrões é importante porque identificam classes, instâncias, seus papéis, colaborações edistribuição de responsabilidades. São, portanto, descrições de classes e objetos que secomunicam, implementados a fim de solucionar um problema comum em um contextoespecífico. Alur et al. (2002) lista as vantagens de se utilizar padrões em um projeto: a) foram testados: refletem a experiência e conhecimento dos desenvolvedoresque utilizaram estes padrões com sucesso em seu trabalho; b) são reutilizáveis: fornecem uma solução pronta que pode ser adaptada paradiferentes problemas quando necessário; c) são expressivos: formam um vocabulário comum para expressar grandessoluções sucintamente;
  3. 3. d) facilitam o aprendizado: reduzem o tempo de aprendizado de umadeterminada biblioteca de classes. Isto é fundamental para o aprendizado dosdesenvolvedores novatos; e) diminuem retrabalho: quanto mais cedo são usados, menor será o retrabalhoem etapas mais avançadas do projeto.3. Arquitetura do Sistema Para exemplificar o uso dos Padrões J2EE, este trabalho apresenta arquitetura deum sistema de Auto-Escola, destacando a aplicabilidade de quatro padrões: InterceptingFilter, Business Delegate, Session Facade, e Data Access Objects. Cada um destespadrões engloba uma das três camadas de uma aplicação web (Apresentação, Negócio eIntegração), de acordo com as boas práticas J2EE Blueprints. O sistema em questão tem por finalidade controlar e automatizar os processos desua auto-escola desde cadastros e matrículas a acompanhamentos de aulas práticas eteóricas. Cadastrar os alunos nas aulas práticas e realizar reservas das aulas práticas. Osistema emite relatórios de todas as movimentações de aulas práticas e teóricas poralunos, acompanhamentos dos resultados exames junto ao Departamento de Trânsito.Também é possível obter relatórios de movimentações financeiras, além de poderacompanhar custos por veículo ou por aluno, entre outros relatórios e estatísticasemitidos pelo sistema. Para este trabalho são apresentadas somente algumas funcionalidades do sistemaque utilizam os padrões citados. Para cada padrão, segue a sua estratégia aplicadaincluindo diagrama de classes e trecho do código fonte. As classes definidas para osistema, e apresentadas neste trabalho são separadas em pacotes, sendo eles: web;cliente, ejb e dao. Cada um destes pacotes pertence a uma camada do sistema e contém os padrõesde projeto para estas camadas.
  4. 4. 3.1. Diagramas de Classes
  5. 5. 3.1.1 Pacote Web Este pacote contém a implementação de um Intercepting Filter, que verifica acada solicitação se o usuário efetuou a autenticação; a) AcompanhamentoProcesso: contém os processos de pedido de habilitação. A partir dela serão solicitadas as ações possíveis dentro de um processo de habilitação, como agendamentos de aula, pagamentos de taxas e acompanhamento do processo; b) AutenticacaoFilter: é o Intercepting Filter para verificar, em todos os acessos, se o usuário efetuou a autenticação na aplicação. No caso do exemplo, faz-se uso da estratégia de implementação StandardEncodeFilter, deixando o controle do filtro a cargo da especificação do Servlet, Servlet 2.3 Specification. public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { boolean permitido = verificaAcesso((HttpServletRequest) request); if (!permitido) { String logon = "logon.jsp?next=" + getNextURL((HttpServletRequest) request); ((HttpServletResponse) response).sendRedirect(logon); } chain.doFilter(request, response); } O método verificaAcesso verifica se o usuário que está “logado” tem permissão para acessar o recurso solicitado. Caso sim, o método retorna true. O método getNextURL retorna a URL que estava sendo requisitada, para que, caso a autenticação seja positiva, a aplicação seja redirecionada para o recurso solicitado.
  6. 6. 3.1.2 Pacote Cliente Este pacote contem os Business Delegate, que são classes que representam osobjetos de negócio distribuídos. Estas classes ficam do lado do cliente e simplificam oacesso aos EJB; a) PagamentoAluno: fornece acesso ao EJB PagamentoAlunoBean; b) AgendamentoAula: é o business delegate do EJB AulaSessionBean. Os clientes acessam esta classe que por sua vez delega todas as chamadas de método para o EJB; import java.rmi.RemoteException; import java.util.ArrayList; import java.util.List; class AgendamentoAula { private static AgendamentoAula instance = new AgendamentoAula(); private AgendamentoAula() {} public static AgendamentoAula getInstance() { return instance; } public List<Aula> getAllAulas() throws Exception { List<Aula> aulas = new ArrayList<Aula>(); try { AulaSessionBean ejb = EJBLocator.getInstance().getAulaSession(); aulas = ejb.getAllAulas(); } catch (Exception e) { throw new Exception(e.getMessage(), e); } return aulas; } public Aluno getAluno(Integer id) throws Exception { Aluno aluno = null; try { AlunoSessionBean ejb = EJBLocator.getInstance().getAlunoSession(); aluno = ejb.getAluno(id); } catch (Exception e) { throw new Exception(e.getMessage(), e); } return aluno; } }A classe AgendamentoAula representa um Business Delegate, sei o qual a visãoacessaria diretamente a camada de negócio (neste caso, um EJB). Ela representa a formacomo o cliente fará a interface com o EJB.No exemplo, de acordo com a estratégia Delegate Proxy Strategy, a classeAcompanhamentoAula faz o acesso à camada de negócio através de um BusinessDelegate, sem conhecer os detalhes da implementação da lógica. Por exemplo, não sesabe como foi feita a obtenção do aluno, se através de um DAO, um EJB ou outrasclasses de negócio.
  7. 7. 3.1.3 Pacote EJB Este pacote contém os session beans que formam a camada de Session Facadedo sistema. a) AlunoSessionBean: é a classe de implementação do EJB que provê os serviços para localizar o aluno para o agendamento de aula prática. Este EJB contém os métodos para obter os dados do aluno solicitado. b) PagamentoAlunoBean: é a classe de implementação do EJB que provê o serviço para consolidar o pagamento de aula feita pelo aluno, levando em consideração as possíveis regras;3.1.4 Pacote DAO Este pacote contém os Data Access Objects. Estes objetos abstraem o acesso àstabelas do banco de dados. No contexto deste exemplo, existiriam as classes AlunoDAO,ProcessoDAO, AulaDAO e InstrutorDAO. public Aluno buscarAlunoPorId(int id) throws HibernateException { String hql = "from Aluno where id = " + montarParametroHQL(PARAMETRO.NOME); Collection<ParametroHQL> parametros = new ArrayList<ParametroHQL>(); parametros.add(new ParametroHQL(PARAMETRO.NOME, id)); return (Aluno)carregarUnico(hql, parametros); } Exemplo de método da classe AlunoDAO (Estratégia de implementação Custom DAO Strategy)Esta classe disponibiliza diversos métodos para facilitar a persistência e consulta deobjetos no banco de dados. Estes métodos encapsulam os objetos nativos da camada depersistência, de modo que o desenvolvedor tenha seu desenvolvimento acelerado.4. Conclusão A plataforma de desenvolvimento J2EE apresenta uma série de vantagens para odesenvolvimento de aplicações que necessitam de escalabilidade, disponibilidade eportabilidade. A utilização dos Padrões J2EE provoca uma grande reutilização nodesenvolvimento. No caso de um sistema de porte médio, conforme verificado naarquitetura apresentada neste trabalho, estas características ficam ainda mais realçadas,uma vez que na própria especificação das classes é realizada a sua relação com ospadrões de projeto. Enfim, o uso dos Padrões J2EE pode ser um diferencial de produtividade para odesenvolvimento de soluções empresariais.
  8. 8. 5. ReferênciasAlur, Deepak; Crupi, John; Malks, Dan. Core J2EE Patterns: as melhores práticas eestratégias de design. Rio de Janeiro: Campus, 2002.Bill Dudney, Stephen Asbury, Joseph K. Krozak e Kevin Wittkopf. J2EE AntiPatterns (2003). Ed. Wiley Publishing.Júnior, Valdo Noronha Peres Junior. Estratégias para a utilização da tecnologia J2EE com a arquitetura de cinco camadas. 124f. Dissertação (Mestrado em Ciências da Computação) – Universidade Federal de Minas Gerais, Belo Horizonte, 2003.Marinescu, Floyd. EJB Design Patterns: Advanced Patterns, Processes, and Idioms. New York: John Wiley & Sons, 2002.Schneide, Ricardo Luiz. Design Patterns. Rio de Janeiro, maio 1999. Disponível em: <http://www.dcc.ufrj.br/~schneide/PSI_981/gp_6/design_patterns.html>. Acesso em: 6 ago 2011.Sun Microsystems. Designing Enterprise Applications With The J2EE Platform Enterprise Edition. Disponível em: <http://java.sun.com/blueprints/guidelines/ designing_enterprise_applications_2e/index.html>. Acesso em: 6 ago. 2011.

×