Escolar Documentos
Profissional Documentos
Cultura Documentos
Arquitetura Distribuda
1.1 J2EE e Arquitetura Distribuda 1.2 Plataforma J2EE 1.2.1 Servidores / Containers de Componentes 1.3 Anlise de arquiteturas 1.3.1 Arquitetura em duas camadas: cliente / servidor 1.3.2 Arquitetura em trs camadas: baseada na Web com cliente magro 1.3.3 Arquitetura em trs camadas: utilizando EJB 1.3.4 Arquitetura em n-Camadas: baseada na Web, com EJB
4
4 5 6 7 7 8 9 10
11
11 11 12 12 13 15 18 19 20
Requests e Responses
3.1 3.2 3.3 3.4 HTTP GET vs. HTTP POST HttpServletResponse HttpServletRequest Certificao Sun Certified Web Component Developer (SCWCD)
22
23 24 25 26
Java Servlet
4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.7.1 4.7.2 4.8 4.9 4.10 HttpServlet Criando o Servlet OlaMundo Deployment Descriptor Compilando e instalando Servlets Laboratrio Recebendo dados de um HTML Forms Navegao Redirecionamento Encaminhar a request Laboratrio Laboratrio Certificao Sun Certified Web Component Developer (SCWCDP)
27
28 30 31 33 34 36 39 39 40 41 43 44
Recursos avanados
5.1 ServletConfig 5.2 ServletContext 5.2.1 Parmetros de inicializao 5.2.2 Utilizando atributos do ServletContext 5.3 Error Pages 5.3.1 Criando nossa Exception 5.3.2 Servlet que dispara Exception 5.3.3 Mapeamento Deployment Descriptor Copyright 2005 Globalcode The Developers Company, todos os direitos reservados.
45
45 49 49 52 53 54 54 56
ndice Criando a pgina que ser apresentada em caso de erro 5.3.4 5.3.5 Enviando Erros HTTP 5.4 Laboratrio 5.5 Certificao Sun Certified Web Component Developer (SCWCDP) 57 58 60 61
Gerenciamento de Sesso
6.1 HttpSession 6.1.1 Obtendo uma sesso 6.1.2 Atributos da sesso 6.1.3 Invalidando uma HttpSession 6.1.4 Laboratrio 6.2 Certificao Sun Certified Web Component Developer (SCWCDP)
62
63 63 63 64 69 70
Servlet Filter
7.1 7.2 7.3 7.4 javax.servlet.Filter javax.servlet.FilterChain Configurao do Deployment Descriptor Laboratrio
71
72 73 74 75
76
76 77 78 82 89 93 96 96 97 100 101 101 102 102 103 104
Custom Tags
9.1 9.2 9.2.1 9.2.2 9.2.3 9.3 9.4 9.5 9.6 9.7 9.8 Introduo TagSupport Definindo tags com atributos O atributo pageContext Exemplo Tag Library Descriptor Diretiva taglib Deploy da aplicao Exemplo Laboratrio Certificao Sun Certified Web Component Developer (SCWCDP)
105
105 106 107 107 108 109 111 112 114 116 117
10 Design
118
AJ5 Desenvolvimento de aplicativos Web com JSP e Servlet 10.1 10.2 Model View and Controller (M.V.C) Laboratrio 119 120
11 Servios do Container
11.1 Pool de Conexes 11.1.1 Acessando o Data Source atravs de cdigo 11.1.2 Laboratrio
121
121 124 125
12 Apndice
12.1 Apndice I: Servlet Listener 12.2 Apndice II: Exemplos para ilustrao da tcnica 12.2.1 Sample Servlet Multi-proposta 12.2.2 Model View Controller 12.2.3 Large Response 12.2.4 Gerando planilhas Excel 12.3 Apndice III: Resumo API Java Servlet 2.3 12.4 Apendice IV: Documentao das tasks do Ant
126
126 128 128 130 131 132 133 135
1 Arquitetura Distribuda
1 Arquitetura Distribuda
1.1 J2EE e Arquitetura Distribuda
Como sabemos, Java uma excelente plataforma de desenvolvimento para softwares distribudos, pois nasceu na grande rede. Um projeto, que foi lanado em 1995, no poderia desconsiderar que qualquer aplicativo da nova gerao teria, em caso de sucesso, milhares de acessos por dia. No cenrio tecnolgico atual, vrios componentes participam da arquitetura de um software e cada vez mais eletro-eletrnicos, de uma maneira em geral, tornam-se dispositivos de acesso grande rede. Com isso, cada vez mais, importante considerar uma soluo coorporativa com:
Escalabilidade Um dos "ades" da engenharia de software que pertence nova economia globalizada e conectada. Uma campanha de marketing pode fazer com que uma pequena empresa cresa violentamente do dia para a noite. Se sua soluo no for capaz de acompanhar, o negcio pode ser prejudicado. Portabilidade A portabilidade faz com que no seja necessrio comprar um servidor ou sistema operacional de nenhuma marca especfica para seu software / soluo. Disponibilidade Com uma linguagem e plataforma confiveis, podemos contar com sistemas que rodam simultaneamente em mais de um servidor para preveno de falhas. Sistemas conhecidos como cluster de servidores permitem que aplicativos fiquem distribudos e prova de falha no seu data-center. Performance Quando o assunto computao distribuda, Java tem uma performance muito boa em comparao com outras tecnologias. Podemos dizer, por exemplo, que Fortran mais rpido que Java para resolver um algoritmo complexo isoladamente, mas Java quando distribudo entre servidores no possui concorrente. Baixo custo de manuteno Cdigo bem escrito, objetos bem definidos e documentados, herana, polimorfismo, interfaces da orientao a objeto e outros aspectos tcnicos tornam um software simples de ser mantido no decorrer do tempo, quando bem planejado e escrito em Java. Sabemos que, cada vez mais, os aplicativos tendem a ter um ciclo de vida cada vez mais duradouro na empresa, por isto o custo de manuteno do software se torna cada vez mais importante.
A plataforma J2EE composta por: Blueprints Design Guidelines for J2EE desenvolvido por tcnicos altamente capacitados e rene, em documentos e exemplos de cdigo, as melhores prticas de desenvolvimento de aplicao J2EE. J2EE Compatibility Test Suite: Processo formal de teste de compatibilidade de Application Server J2EE garantindo a padronizao entre os servidores de diferentes fabricantes. J2EE Reference Implementation: A plataforma inclui um servidor chamado de R.I. (reference implementation) implementado com 100% das funcionalidades especificadas. a chave para validar aplicaes J2EE. 100% free e com cdigo fonte disponvel. APIs: Todo poder e sucesso do J2SE + suporte para Enterprise JavaBeans, Java Servlets API, Java Server Pages, XML e Messaging.
Podemos dividir J2EE em duas partes: Infra-estrutura de Runtime para hospedagem de aplicaes (servidor de aplicao) Um conjunto de APIs para construo de aplicaes. A infra-estrutura de Runtime composta por uma conjunto de objetos e processos que hospedam aplicaes desenvolvidas com as APIs J2EE (Servlets, JSP, EJBs etc.). Esta infra-estrutura chamada de container. O conjunto de APIs J2EE definida, em sua maioria, por interfaces que podem ser empregadas pelos desenvolvedores das aplicaes corporativas. Tais APIs possuem vnculos com o ncleo (kernel) do servidor que executam tarefas voltadas para o gerenciamento de recursos e infra-estrutura. Podemos dizer que, ao desenvolvermos aplicaes J2EE atravs do uso de APIs disponibilizadas no Java 2 Enterprise Edition (Reference Implementation), elas podem ser executados nos servidores de aplicaes que tenha implementado as especificaes tcnicas dos servidores J2EE. Contamos com as seguintes APIs na plataforma J2EE: JDBC Extension Enterprise JavaBeans (EJB) Java Servlets Java Server Pages Java Message Service Java Transaction API JavaMail Anotaes
1 Arquitetura Distribuda
Representamos aqui um banco de dados, mas com arquitetura J2EE podemos acessar arquivos, sistemas legados, ERPs, fila de mensagens e qualquer outra fonte de dados.
Anotaes
1 Arquitetura Distribuda
Uma das vantagens que solues baseadas na Web apresentam a segurana, j que permite a utilizao de criptografia nos dados (HTTPS) sem exigir trabalho adicional com o firewall.
Anotaes
1 Arquitetura Distribuda
10
App(1)
App(2)
App(3)
App(4)
App(n)
Anotaes
11
2.2 Tomcat
O Tomcat foi originado a partir de um projeto da Sun chamado Java Web Server e foi doado para a Apache Foundation. Versionamento do servidor Tomcat:
O Tomcat um container Java e vem acompanhado de um servidor Web chamado Coyote, no entanto, em aplicaes corporativas freqentemente necessrio utilizar um servidor Web mais robusto, como o caso do Apache Web Server. Para maiores informaes sobre a configurao do Tomcat com o Apache Web Server, consulte a documentao do Tomcat: http://jakarta.apache.org/tomcat/tomcat-3.2-doc/tomcat-apache-howto.html
2.2.1 Instalao
URL para download: http://jakarta.apache.org Existe uma verso especial para Windows que possui um programa de instalao do Tomcat, mas tambm est disponvel um arquivo .zip que pode ser descompactado em qualquer sistema operacional, sendo este o padro para instal-lo: Configure a varivel de ambiente CATALINA_HOME em seu sistema operacional, atribuindo o nome do diretrio onde o Tomcat foi instalado. Inicializao: Windows: Execute o startup.bat presente no diretrio %CATALINA_HOME%\bin. Linux: Execute o startup.sh no diretrio $CATALINA_HOME/bin, digitando: ./startup.sh Para testar se o Tomcat est funcionando, abra o navegador e coloque o seguinte endereo: http://localhost:8080 Observao: Por padro, o Tomcat vem configurado para trabalhar na porta 8080. Se a pgina inicial do Tomcat aparecer, a instalao do Tomcat foi feita com sucesso.
12
2.2.2 Administrao
Tomcat Administration A partir da verso 4.1, o Tomcat tem uma aplicao de administrao http://localhost:8080/admin Para fazer o login nesta aplicao, ser necessrio editar o arquivo tomcat-users.xml que, como veremos mais a frente, contm as regras de segurana. Embora estejamos editando um arquivo XML (o que parece muito inseguro), possvel fazer autenticao no banco de dados ou em servidores de nomes e diretrios. Exemplo: Microsoft Active Directory ou qualquer outro diretrio LDAP.
Tomcat Manager Esta aplicao est disponvel atravs da URL: http://localhost:8080/manager /html Esta aplicao faz o gerenciamento de todas as aplicaes instaladas neste servidor, permitindo que seja possvel iniciar e parar uma aplicao especfica sem a necessidade de reinicializar o servidor inteiro. Tambm ser necessrio adicionar um usurio no arquivo tomcat-users.xml para fazer o login nesta aplicao.
Anotaes
13
2 Desenvolvimento para Web Server tomcat-users.xml Este documento pode ser encontrado em $CATALINA_HOME/conf e nele podemos definir roles para usurios, ou seja, grupos aos quais os usurios pertencem. Cada usurio pode pertencer a um ou mais roles. Enquanto no arquivo de configurao da aplicao configuramos os roles que podem acess-la, como ser visto mais adiante. Neste arquivo estamos indicando que o usurio globalcode com a senha globalcode poder acessar todas as aplicaes que estiverem acessveis para a role admin e manager (que exatamente o caso das aplicaes Tomcat Administration e Tomcat Manager).
1 2 3 4 5 6 7 8 9 10 <?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="tomcat"/> <role rolename="manager"/> <role rolename="admin"/> <user username="tomcat" password="tomcat" roles="tomcat,admin,manager"/> <user username="both" password="tomcat" roles="tomcat,role1,manager"/> <user username="role1" password="tomcat" roles="role1"/> <user username="globalcode" password="globalcode" roles="admin,manager"/> </tomcat-users>
14
Diretrios de desenvolvimento A estrutura de desenvolvimento a estrutura que utilizaremos para criar nossos projetos, normalmente fora da estrutura de diretrios do Tomcat ou de qualquer outro servidor de aplicaes. Esta estrutura no obrigatria, mas usual, por isto estaremos utilizando esta estrutura em nossos laboratrios.
Anotaes
15