Aplicações corporativas multicamadas – Parte 3
Este artigo apresenta um tutorial para a construção de uma pequena aplicação corporativa em Java EE. Para isso, empregou-se o uso intensivo dos assistentes de código presentes na IDE NetBeans 7, além das facilidades de integração que a ferramenta traz com o servidor de aplicação GlassFish 3.

Em que situação o tema é útil
Para quem programa em Java EE, a integração entre NetBeans e GlassFish permite a criação de aplicações corporativas com qualidade e menor tempo, fatores essenciais para a produtividade em projetos dessa natureza. Aos desenvolvedores novatos, a utilização dos assistentes de código reduz a curva de aprendizado das particularidades e complexidades envolvidas na plataforma.

Este terceiro artigo encerra a série que abordou o desenvolvimento de aplicações corporativas, focando as tecnologias Java EE. Uma aplicação corporativa representa um software que normalmente lida com grandes bases de dados, está integrado a outros sistemas, e gerencia informações que agregam valor aos processos de negócio das organizações.

Tais aplicações devem estar baseadas em tecnologias que viabilizem a segurança de acesso simultâneo de muitos usuários, a possibilidade de escalabilidade para aumento de carga de processamento, tempo de resposta aceitável para múltiplas requisições, tratamento de tolerância a falhas, entre outras preocupações.

Para quem constrói, envolve lidar com sistemas de alta e média complexidade, que interagem com diversas tecnologias e se integram com outros sistemas, muitas vezes antigos e difíceis de manter e evoluir – os chamados sistemas legados.

A plataforma Java EE fornece tanto a infraestrutura de execução para as aplicações corporativas, em servidores que seguem a arquitetura de sistemas multicamadas, bem como o ambiente de desenvolvimento baseado em componentes de software, por meio da especificação Enterprise JavaBeans (EJB), permitindo a reutilização de partes que compartilham as mesmas funcionalidades em diferentes aplicações.

Neste contexto, o objetivo deste artigo é apresentar um passo a passo para a construção de uma aplicação corporativa na plataforma Java EE 6, demonstrando os principais conceitos vistos nos artigos anteriores. Elaborado na forma de tutorial, você aprenderá a criar uma pequena aplicação, chamada CotacaoAppEE, construída com um componente Enterprise JavaBeans (EJB do tipo session bean) na camada de negócio, e a camada cliente baseada na web, em JavaServer Faces (JSF).

Para acelerar o desenvolvimento do aplicativo, serão empregados alguns recursos que automatizam a geração de código por meio do NetBeans 7. O uso de ferramentas que fornecem suporte à engenharia de software, integradas em ambientes de desenvolvimento, chamados IDEs (Integrated Development Environment), como é o caso do NetBeans, melhora a produtividade e reduz o tempo de construção do software. A opção pelo NetBeans vem do fato da ferramenta apresentar facilidades de integração com serviços que estão relacionados à plataforma Java, como a implantação automática no servidor EJB (neste projeto, o GlassFish), a presença de assistentes para gerenciamento de serviços do GlassFish, a conectividade com o gerenciador de banco de dados (JavaDB), a simplificação no uso de componentes da camada web, entre outros.

O foco deste tutorial é mostrar como a tecnologia Java EE, aliada com o uso eficiente de um ambiente de desenvolvimento (IDE) e das técnicas de arquitetura de software (no caso, padrões de projeto), traz para simplificar a construção de aplicações corporativas. Portanto, o código escrito para os exemplos atende a esse propósito, de apresentar o essencial para tornar as ideias compreensíveis. Em consequência, algumas preocupações ficaram de fora, como é o caso do tratamento de erros, os aspectos da estética (layout) das páginas, o refinamento da lógica, e explicações detalhadas sobre os componentes empregados.

Para desenvolver este tutorial, é necessário realizar o download do IDE NetBeans 7.2 com os seguintes servidores: GlassFish 3.1.2 (EJB), Tomcat 7.0 (web) e Java DB (banco de dados). Tais servidores virão junto com a distribuição Java EE do NetBeans, e podem também ser adicionados como pacotes, via Gerenciador de Plug-ins, a partir da opção Ferramentas, no menu principal da IDE.

A aplicação exemplo

CotacaoAppEE é um aplicativo que apresenta a cotação diária de moedas estrangeiras em moeda corrente (Real), permitindo que o usuário receba por e-mail a cotação de uma determinada moeda. A cotação da moeda é recuperada a partir do último valor inserido no banco de dados para cada moeda cotada. Com o intuito de testar o aplicativo, disponibilizamos um arquivo de script SQL que, ao ser executado, adicionará alguns dados no banco de dados. Para esta aplicação não foi implementada a funcionalidade de atualização diária dos valores de cotação das moedas, portanto, considere como uma futura melhoria esse requisito funcional.

Do ponto de vista da arquitetura de software, a aplicação foi projetada em camadas seguindo as diretrizes da plataforma Java EE, com a presença da camada cliente (web), a camada de regras de negócio (contêiner EJB – vide Nota do DevMan 1), e a camada de armazenamento (servidor de banco de dados relacional). A localização e execução dessas camadas estarão no mesmo servidor de aplicação, fato que norteou a decisão por componentes EJB com acesso local pela camada cliente, o que aumenta a eficiência quanto ao tempo de resposta de chamadas aos serviços.

Nota do DevMan 1. Contêiner EJB

O contêiner EJB (Enterprise JavaBeans) é um dos principais módulos de um servidor Java EE. É responsável pela implantação e gerência dos componentes de negócio da aplicação corporativa. Ele implementa vários recursos, como suporte às transações distribuídas, segurança de autenticação e autorização, acesso remoto aos componentes, persistência, integração entre aplicações, entre outras.

Na perspectiva do processo de desenvolvimento, o modelo de construção de uma aplicação corporativa não difere muito de um software tradicional. Das atividades previstas no processo, as de engenharia de requisitos são as mais críticas para o sucesso do projeto, o que envolve a própria concepção e entendimento dos requisitos do software. Nesse aspecto, é fundamental na modelagem da solução, levantar e identificar os “conceitos” que descrevem os objetos, as propriedades e relações do modelo do domínio (dos dados) do sistema; tarefa esta que é realizada nas etapas iniciais com o levantamento das necessidades, e aprimora-se com a análise e o projeto da aplicação.

Para o estudo de caso apresentado neste tutorial, CotacaoAppEE possui apenas três classes conceituais do modelo de domínio, que são Moeda, Cotação e o Acompanhamento da Cotação, representadas no diagrama de classes (UML) exposto na Figura 1. A partir desse modelo identificamos as entidades de negócio essenciais para o projeto arquitetural seguindo a plataforma Java EE.

Diagrama de classes do modelo conceitual


abrir imagem em nova janela

Figura 1. Diagrama de classes do modelo conceitual.

É importante destacar que o processo de modelar o domínio provavelmente será mais complexo do que parece ser neste exemplo. Dependendo do tamanho da aplicação, podem ser necessárias várias iterações no refinamento do processo de construção do modelo.

Estratégias para criar as entidades

Por definição, aplicações corporativas manipulam dados que são armazenados em grandes bases persistentes. Para uma aplicação Java EE, isso se traduz nos objetos de persistência, chamados entidades, que serão tratados pelo mecanismo de mapeamento objeto-relacional (JPA).

A identificação dos objetos de persistência exige um conhecimento no domínio do negócio, representado pelo modelo conceitual (como diagrama de classes do domínio), ou da capacidade de criar o esquema do banco de dados, e até mesmo interpretar um esquema pré-existente, quando se tratar de um sistema legado. Essas estratégias são facilitadas pelo uso de ferramentas que podem gerar automaticamente as entidades e as correspondentes tabelas de banco de dados.

A primeira estratégia é partir do próprio modelo de classes, considerando as regras de orientação a objetos, como identificação de classes e atributos, associações entre classes, herança e polimorfismo. Com o modelo de classes pronto, aplica-se o mecanismo de mapeamento objeto-relacional da JPA. Em seguida, gera-se o esquema do banco de dados da aplicação. A essa abordagem chamamos de top down, pois parte do modelo conceitual (orientado a objetos) para o esquema de banco de dados.

Na segunda estratégia, chamada de bottom up, ocorre o inverso da abordagem anterior. Parte-se de um esquema de banco de dados pronto (ver ...

Quer ler esse conteúdo completo? Tenha acesso completo