u06-desenvolvimento de software multicamadas (metodologia)
DESCRIPTION
Uploaded from Google DocsTRANSCRIPT
UNID 6 - Desenvolvimento de Software Multicamadas
UNID 6 - Desenvolvimento de Software Multicamadas
UNAMA – Universidade da AmazôniaPRÓ-REITORIA DE PESQUISA, PÓS-GRADUAÇÃO E EXTENSÃOPÓS-GRADUAÇÃO LATO SENSUCurso de Especialização em Desenvolvimento de Sistemas Baseado em Software Livre
Desenvolvimento de Aplicações Multicamadas
Prof. Cláudio Martins [email protected]
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
2
AssuntosAssuntos
Especificação e modelagem de sistemas multicamadas
Arquitetura em camadas (MVC e variantes)
Papéis (roles) e Responsabilidades
Servidor de Aplicação
Configuração do Servidor de Aplicação
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
3
Especificação e modelagem de sistemas multicamadas
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
4
Paradigma de desenvolvimento baseado em Paradigma de desenvolvimento baseado em componentescomponentes
Ao longo da disciplina percebemos que o desenvolvimento de sistemas/aplicações em uma arquitetura multicamadas traz muitos benefícios para quem desenvolve software, em especial a possibilidade de criar software com qualidade e enfatizando a reutilização de componentes.
A separação da aplicação em “camadas” permite que os desenvolvedores sejam alocados em tarefas especifícas (dos seus componentes) e a construção do software seja modular.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
5
No caso das aplicações JEE, podemos construir toda a solução a partir de componentes de aplicação prédefinidos.
Se a solução é totalmente em Java, os componentes de aplicação que se vai trabalhar são os seguintes, considerando as duas principais camadas:
Camada cliente
Camada Servidora
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
6
Componentes de uma solução JEEComponentes de uma solução JEE
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
7
Contêineres presentes na solução JEEContêineres presentes na solução JEE
Servidor JEE
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
8
Uma metodologia para desenvolvimentoUma metodologia para desenvolvimento Para o desenvolvimento de uma aplicação distribuída, o
sistema deve ser modelado no paradigma orientada a objetos.
Os passos que se deve executar para construir (desenvolver) o software multicamadas:
– Especificação da aplicação
– Projeto e arquitetura detalhada
– Implementação da camada do servidor (regras de negócio)
– Implementação da camada cliente (pode haver mais de um cliente)
– Testes
– Configuração e implantação do servidor JEE
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
9
Arquitetura em camadas (MVC e variantes)
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
10
Padrão MVCPadrão MVC
Como vimos anteriormente, o padrão MVC é o mais indicado para o desenho da solução da camada cliente (incluindo a camada web).
MVC é um padrão que defende a separação do software em três partes bem definidas:– A Visão
– O Controlador da aplicação
– E o Modelo
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
11
Solução MVCSolução MVC
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
12
Como funciona o MVC?Como funciona o MVC?1 – O usuário dispara um evento através da camada de visualização (clica em um botão , p.ex);
2 – O controlador recebe o evento e coordena a aplicação, determinando o fluxo de navegação e quais objetos serão necessários para realizar a regra de negócio;
3 – O “modelo” é utilizado para representar o domínio das informações da aplicação (dados). Além disso, o modelo pode ser chamado pelo controlador para a realizar algumas regras de negócio. O modelo pode ainda ser usado para enviar os dados para a visão (uma página web, por exemplo);
4 – Depois que o controlador realiza a regra de negócio, ele renderiza a nova visão e a envia para o usuário.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
13
MVC em Arquitetura Web (Java)MVC em Arquitetura Web (Java) Na camada web, usando JAVA EE, podemos ver
isso da seguinte forma:– A VISÃO é representada por páginas JSP e HTML
– O CONTROLADOR é delegado a classes Servlet’s (ou JSP sem tags html)
– No MODELO pode ser utilizado objetos “java beans” (com um tempo de vida determinado, “request” ou de “sessão”, por exemplo).● Em JSF esses objetos são chamados “managed beans”
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
14
MVC em Arquitetura WebMVC em Arquitetura Web
Browser envia a solicitação (request)
Controlador interage com o modelo
Controlador chama a visão
Visão formata a resposta ao browser
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
15
Tipos de MVCTipos de MVC Há alguns variações do padrão MVC quando se trabalha
na web. Por exemplo:
MVC 1
– Foi a primeira geração para implementar a arquitetura MVC em páginas JSP. Onde requisições HTTP são enviadas para uma página JSP que implementa um controlador que envia as requisições para o modelo para que sejam retornadas para a camada de visão.
MVC 2
– O MVC2 pode ser modelado com apenas um controlador para toda a aplicação. Um característica é regra o uso de Servlet como controladores e páginas JSP apenas para visualização.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
16
Papéis e responsabilidades
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
17
Papéis e responsabilidadesPapéis e responsabilidades A especificação EJB define alguns papéis para os envolvidos
no processo de desenvolvimento de aplicações JEE. Estes papéis variam baseados no tamanho da empresa ou projeto.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
18
Papéis e responsabilidadesPapéis e responsabilidades
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
19
Servidor de Aplicação
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
20
Qual o ambiente e servidor JEE?Qual o ambiente e servidor JEE? O papel do servidor é hospedar a aplicação, que deve estar
empacotada em um arquivo do tipo “ear”.
– A operação de implantação de uma aplicação chama-se “deploy”.
Antes, é necessário definir qual máquina, sistema operacional e servidor (implementação JEE) deverá ser utilizada.
– O computador deve ser configurado para atender as demandas máximas de estresse, carga de processamento, conexões simultâneas, etc.
– Quanto aos servidores há boas opções livres como Jboss, Glassfish, e outros. A escolha é um decisão que dependerá do “expertise” do suporte local para resolver problemas que sempre surgem.
– O ambiente operacional é uma opção muito relacionada ao tipo de computador e ao suporte que será dado ao servidor. Opções: Linux, Sun/Solaris, ou Windows Server?
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
21
Serviços a configurar no ServidorServiços a configurar no Servidor Após a escolha do servidor e ambiente, é necessário
realizar os ajustes de configuração, uma vez que o servidor pode atender alguns perfis de aplicações.
É necessário estabelecer alguns parâmetros para escolher a melhor configuração, pois as aplicações podem necessitar de alguns serviços no servidor, como:
– JDBC, RMI, JavaMail, JMS, JMX, servlets, portlets, JSF, web services e outros
– Cada serviço “levantado” no servidor acarreta alocação de recursos do servidor e, consequentemente, do equipamento (memória, disco, processador, etc) onde está instalado o servidor.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
22
Como instalar e configurar um servidor Como instalar e configurar um servidor GlassFishGlassFish
O GlassFish é um produto da Oracle, com versão “livre” e open-source, porém existe uma versão proprietária chamada GlassFish Enterprise Server.
Para instalá-lo é preciso fazer o download em http://glassfish.java.net/public/downloadsindex.html
Atualmente está na versão 3.1.2 (aderente ao JEE 6), com as seguintes características:
– “Clusterização”, Administração centralizada e na web, suporte a SSH e DCOM, alta disponibilidade, suporte à atualização automática, APIs embutidas e muito mais.
– Suporte nativo aos componentes de terceiros (RichFaces, Primefaces, Grizzly, Weld, Mojarra, Jersey, EclipseLink, OSGi, JavaDB, …).
– Suporta a nova versão do Java (JDK 7) e muito mais.
Leia mais em “Como instalar e configurar um servidor GlassFish.pdf” disponível no disco virtual da disciplina.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
23
Configuração do Servidor de Aplicação
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
24
Por que é necessário configurar o servidor?Por que é necessário configurar o servidor?
Apesar dos ambientes de desenvolvimento (IDEs, como o Netbeans e Eclipse) facilitarem a implantação das aplicações nos servidores JEE, quando chega o momento de implantar em servidores de produção, algumas configurações são necessárias.
No Glassfish, por exemplo, se uma aplicação utilizar JNDI com data sources e connection pool é necessário configurar no servidor antes de implantar (deploy) a aplicação empacotada (EAR).
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
25
Passos para configura os serviços de Passos para configura os serviços de acesso ao banco de dadosacesso ao banco de dados
Os passos para você utilizar o serviço de nomes com JNDI para acesso a um banco de dados:– Copiar o driver do banco (jar) no servidor
– Configurar o Pool de Conexões
– Testar o Pool de Conexões
– Criar o Recurso JDBC
– Implantar e testar a aplicação
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
26
Copiar o driver do banco (jar) no servidorCopiar o driver do banco (jar) no servidor Copie o driver do banco para a pasta
[GLASSFISH_HOME]/glassfish/domains/domain1/lib/ (domain default).
– Para isso, basta baixar o driver jdbc4, correspondente à sua versão do PostgreSQL, em http://jdbc.postgresql.org.
– Para o PostgreSQL 8.x use o arquivo postgresql-8.3-603.jdbc3.jar
Reinicie o servidor para que ele passe a reconhercer o driver.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
27
Configurar o Pool de ConexõesConfigurar o Pool de ConexõesApós a reinicialização, vá ao console de administração (normalmente porta 4848 - ex.: http://localhost:4848/) e selecione a opção Recursos > JDBC > Grupo de conexões JDBC (Connection Pools), no menu à esquerda. Clique em “Novo”.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
28
Configurar o Pool de Conexões (2)Configurar o Pool de Conexões (2)
Defina o nome que achar melhor para o pool de conexões (ex.: pgPool). Selecione a opção javax.sql.ConnectionPoolDataSource na combo 'Tipo de Recurso' e selecione PostgreSQL em 'Fornecedor do driver...' (Database Vendor). Clique no botão 'Avançar'.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
29
Agora, vamos configurar os demais parâmetros. Selecione o nome da classe do 'Datasource' org.portgresql.ds.PGConnectionPoolDataSource, na combo. Em seguida, vá ao final da página e informe os seguintes dados:
DatabaseName=[nome-do-banco], Password=[senha-do-banco], PortNumber=5432 (porta default), ServerName=[nome-do-servidor ou ip], User=[usuario-do-banco].
Clique em 'Concluir' para salvar o pool.
Configurar o Pool de Conexões (3)Configurar o Pool de Conexões (3)
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
30
Testando a conexãoTestando a conexãoAgora que o pool de conexões foi criado, é hora testá-lo. Para isso, selecione o pool recém criado e clique em 'Ping'. A mensagem "Ping executado com êxito", indica que tudo está funcionando corretamente.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
31
Criar o Recurso JDBCCriar o Recurso JDBCCom o pool criado e testado, falta apenas permitir que suas aplicações o utilizem. Para isso, crie um nome JNDI para o acesso ao JDBC do banco.- Vá ao menu Recursos > JDBC > Recursos do JDBC, clique em Novo.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
32
Criar o Recurso JDBC (2)Criar o Recurso JDBC (2)Agora, especifique o nome do recurso no formato jdbc/[nome-do-banco].Selecione o pool de conexões criado nos passos anteriores e clique em 'OK', para finalizar.
- No exemplo, o nome dado é “jndi/aulas”.Este nome deverá ser utilizado nas aplicações, para permitir a
comunicação com o banco de dados através do pool de conexões.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
33
Visão do recurso JDBC no NetbeansVisão do recurso JDBC no Netbeans
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
34
Configurando uma fonte de dados JDBC e o pool
de conexão Usando o Netbeans
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
35
Introdução – Definindo a conexão JDBCIntrodução – Definindo a conexão JDBC Além do administrador do Glassfish, é possível criar o recurso
JDBC de acesso ao banco de dados usando o Netbeans para esse trabalho.
Antes de iniciar o processo, crie uma conexão com o banco de dados.
– Entre em Serviços – Banco de Dados e acrescente a conexão com o banco.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
36
Etapa 1Etapa 1 Inicie o processo com a opção Arquivo > Novo Arquivo, na
categoria Glassfish. Em seguida, Recurso JDBC e clique em Próximo
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
37
Etapa 2Etapa 2 Na Etapa 2, Atributos gerais, escolha a opção Criar novo pool
de conexão JDBC e, em seguida, no campo de texto Nome JNDI, digite o nome do data source no formato jdbc/nomeDatasource.
– No exemplo: jdbc/meuDatasource
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
38
Adicionando as propriedades de conexãoAdicionando as propriedades de conexão
Na etapa 3, Propriedades adicionais, você pode adicionar propriedades, porém podemos configurar nas etapas seguintes essas propriedades.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
39
Escolhendo a conexãoEscolhendo a conexão Na Etapa 4, informe o Nome do pool de conexão JDBC.
Certifique-se de que a opção Extrair da conexão existente esteja selecionada e escolha jdbc:postgres... na lista suspensa.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
40
Etapa 5 – Adicionando propriedadesEtapa 5 – Adicionando propriedades Adicione propriedades como o nome do banco... Em seguida clique em
Finalizar.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
41
ExercícioExercício
Teste a conexão no Netbeans e no Glassfish.