API Orientada a Objetos de Java - Wiki LES PUC-Rio

Propaganda
Java II
Sérgio Luiz Ruivace Cerqueira
[email protected]
Java Web
Arquitetura
• Aplicações web são basicamente constituídas de:
– Requisições
– Respostas
© LES/PUC-Rio
Model View Controller (MVC)
• O que é MVC?
– Padrão arquitetural em três camadas para desenvolvimento de
sistemas, surgido nos anos 80.
• Sugere a divisão de uma aplicação visual em 3 partes
– Model: Modelo da sua aplicação, com as regras de negócio
(business logic) e todo o processamento da aplicação
– View: Apresenta a informação e recolhe os dados fornecidos
pelo usuário
– Controller: Recebe as informações da entrada e as transmite
para o modelo
View
Controller
© LES/PUC-Rio
Model
Arquitetura MVC
• Em Java:
– O modelo será uma aplicação orientada a objetos.
– O controlador será alguma tecnologia de implementação
(padrão comando) que juntamente com o Servlet redirecionará
as chamadas feitas pelo cliente aos objetos no modelo.
– A apresentação será representada pelo JSP.
© LES/PUC-Rio
Plataformas Java
• Existem quatro plataformas para a programação em Java,
cada uma com sua JVM e API:
– Java Platform, Standard Edition (Java SE)
• Provê a API base para o desenvolvimento em Java, essa plataforma
define desde os tipos básicos e objetos até classes de alto nível
usadas para segurança, rede, GUI, acesso a bases de dados...
– Java Platform, Enterprise Edition (Java EE)
• É construída a partir da Java SE. Provê uma API e um ambiente de
desenvolvimento para larga escala, escalável, fidedigno, com
múltiplas camadas.
– Java Platform, Micro Edition (Java ME)
• Provê uma API e um ambiente de desenvolvimento para
dispositivos móveis.
– Java FX
• Provê um ambiente para desenvolvimento de aplicações escritas
em Java FX Script.
© LES/PUC-Rio
JEE – Java Enterprise Edition
• Voltado ao desenvolvimento de aplicações empresariais
– Foco no desenvolvimento de componentes para reduzir custos
• Projetado para ajudar a desenvolvedores produzirem
sistemas que necessitem de:
– Múltiplas camadas
– Larga escala
– Escalável
– Fidedigno, confiável
– Segurança
• Aplicações para JEE são independentes de plataforma
– A própria linguagem Java é independente
– Assim como a máquina virtual, o ambiente JEE é totalmente
especificado
– Qualquer um pode fazer um JEE
© LES/PUC-Rio
Composição da Plataforma JEE
• Modelo de desenvolvimento de aplicações Web
• Modelo de aplicações distribuídas em camadas
– A lógica da aplicação é dividida em componentes de acordo
com sua função
– Cada camada executa em diferentes máquinas
• Modelo de desenvolvimento orientado a componentes
reutilizáveis
• Modelo de segurança unificado
• Flexível controle de transações
• Troca de dados integrada baseada em XML
© LES/PUC-Rio
Componentes
• Um componente:
– É um pacote coerente de software independentemente desenvolvido
– É entregue como uma unidade
– Oferece interfaces que podem ser conectadas, inalteradas, com
outros componentes para compor um sistema maior
• Componente JEE
– Um componente JEE é uma unidade funcional auto-contida, que pode
ser montada em uma aplicação JEE com suas classes e arquivos
relacionados, e que se comunica com outros componentes
© LES/PUC-Rio
JEE – arquitetura em 3 camadas
• Uma camada para lidar com a interface
– Executa no computador cliente e no servidor JEE
– Em desenvolvimento Web, é implementado por JSP.
• Uma para lidar com a lógica da aplicação
– Executa no servidor JEE
– Em desenvolvimento Web, é implementado por servlets e
classes do sistema.
• Uma para gerenciar acesso a banco de dados
– Executa no EIS (Enterprise Information System)
© LES/PUC-Rio
JEE – arquitetura em 3 camadas
© LES/PUC-Rio
JEE – camada de interface
• Aplicações JEE podem ou não podem ser baseadas em Web
– As primeiras executam diretamente na máquina cliente
– As demais usam web browser para obter páginas e applets
© LES/PUC-Rio
JEE – camada de interface
• Clientes de aplicação
– São uma forma de gerenciar as aplicações ou o sistema
– Tipicamente aplicações gráficas
• java.awt
• javax.swing
• Aplicações JEE requerem uso de clientes leves (thin clients)
– Interfaces bem simples
– Delegam todas as tarefas mais complexas para o servidor JEE
• Acesso a bancos de dados
• Conexão com sistemas legados
• ...
© LES/PUC-Rio
JEE – camada de lógica
• Componentes Web
– Apóiam a geração dinâmica de conteúdo
• Componentes da lógica de negócio
– Contêm o código para solucionar as necessidades de um
domínio específico
© LES/PUC-Rio
Visão geral das tecnologias JEE 5 para a Web
• Tecnologias para desenvolvimento de aplicações Web
– Java Servlet 2.5
– JavaServer Pages 2.1
– JavaServer Pages Standard Tag Library
– JavaServer Faces 1.2
© LES/PUC-Rio
JEE – camada lógica (Web)
• Servlets
– Classes que processam pedidos e geram respostas
dinamicamente
• JSP
– Documentos baseados em texto que executam como servlets
– São especializadas na geração de conteúdo dinâmico para
clientes Web (browsers).
© LES/PUC-Rio
JEE – contêineres e serviços
• Componentes são instalados em seus contêineres durante a
implantação
– Contêineres são a interface entre o componente e o serviço
específico da plataforma que ele provê
© LES/PUC-Rio
Desenvolvimento para a Web com
JEE
Aplicação Web
• Uma aplicação Web é uma extensão dinâmica de um
servidor Web ou servidor de aplicação
• Existem dois tipos de aplicações Web
– Orientada a apresentação
• Uma aplicação web orientada a apresentação gera páginas web
interativas contendo diversos tipos de linguagens de marcação
(HTML, XML, ...) e conteúdo dinâmico em resposta a requisições
– Orientada a serviços
• Uma aplicação Web orientada a serviços implementa um endpoint
de um Web service
• Aplicações orientadas a apresentação geralmente são
clientes de aplicações Web orientada a serviços
© LES/PUC-Rio
Componentes Web
• Provêem as extensões dinâmicas de um servidor Web
• São Java Servlets, páginas JSP ou Web services
• A interação entre um cliente Web e uma aplicação Web
© LES/PUC-Rio
Servlets e JSPs
• Servlets são classes implementadas em Java que
dinamicamente processam requisições e constroem
respostas
• Páginas JSP são documentos baseados em texto que
executam como servlets mas permitem uma forma mais
natural de criar conteúdo estático
• Servlets e JSP são parecidos e são equivalentes
© LES/PUC-Rio
Servlets e JSPs
• O uso de servlets é recomendado para
– Controlar as funções de uma aplicação orientada a
apresentação, como redirecionar requisições e tratar dados não
textuais (binários)
– Aplicações orientadas a serviços
• Páginas JSP são mais apropriadas para gerar marcações
baseadas em texto
– HTML, SVG, WML, e XML
© LES/PUC-Rio
Contêiner Web
• Provê um ambiente de execução de aplicações Web e seus
componentes, que são implementados por Servlets e JSPs
• Realiza o processamento de requisições e respostas HTTP,
como um servidor Web
• Permite configurar:
– serviços de segurança, concorrência e gerenciamento do ciclo
de vida
– acesso para APIs como resolução de nomes, transações e envio
de e-mails
© LES/PUC-Rio
Contêiner Web
• Alguns aspectos do comportamento de aplicações web
podem ser configurados quando as aplicações são
implantadas em um contêiner Web
– As informações de configuração são mantidas em um arquivo
texto em formato XML chamado Web application deployment
descriptor (DD)
• A maioria das aplicações Web utilizam o protocolo HTTP, e o
suporte a HTTP é um dos maiores aspectos de componentes
web
© LES/PUC-Rio
Módulo Web
• É a menor unidade de implantação (deployment) de
recursos web
– Corresponde a uma aplicação Web
• Pode conter
– Componentes Web e recursos Web
– Classes auxiliares da parte do servidor
• Ex. beans de banco de dados, carros de compras
– Classes da parte cliente
• Ex. applets
© LES/PUC-Rio
Módulo Web
• Tem uma estrutura específica. O diretório-raiz armazena
– páginas JSP
– classes client-side e
– arquivos e recursos web estáticos (imagens)
© LES/PUC-Rio
Módulo Web
• Subdiretório <raiz>/WEB-INF/ contém
– web.xml: deployment descriptor da aplicação web
– lib: Arquivos JAR de bibliotecas chamadas por classes da parte
do servidor
– classes: Classes server-side
– Servlets, classes utilitárias e JavaBeans
– tags: Arquivos de implementações de tag libraries
© LES/PUC-Rio
Servidores
Servidor de aplicação x Contêiner Web
• Contêiner Web
– Serve Servlets e JSP
– Provê, somente, formas de configurar/instalar serviços já
disponíveis em servidores de aplicação
– Exemplo de contêiner: Tomcat.
• Servidor de aplicação:
– Contém contêineres Web
– Contém contêineres de objetos de negócio (também chamados
EJB containers), podendo servir EJBs
– Provê serviços de gerenciamento de transações, segurança,
pool de conexões com banco de dados, balanceamento de
carga, etc.
– Exemplos de servidores de aplicação: JBoss e GlassFish.
© LES/PUC-Rio
N-Camadas
Fonte:http://www.dsc.ufcg.edu.br/~jacques/cursos/j2ee/html/intro/intro.htm
© LES/PUC-Rio
Jakarta TomCat
Tomcat
• Servidor gratuito baseado em java
• Configurável de maneira simples via XML
• Oferece suporte a Java (Servlets e JSP)
• Tomcat
– Pode ser gratuitamente obtido em http://www.apache.org
– Utilizem a versão 5.x
– VM jdk 1.6.x
© LES/PUC-Rio
Instalando o tomcat
• Baixe o arquivo zip
• Descompacte no diretório desejado
• Configure a variável de ambiente CATALINA_HOME que
deve apontar para o diretório onde foi descompactado o
tomcat.
• Adicione na variável path o texto ;%CATALINA_HOME%\bin
© LES/PUC-Rio
Configurando o Tomcat
• Onde colocar as classes dos Servlets?
• Primeiro, é preciso criar uma aplicação web
– Cria-se um diretório em %TOMCAT_HOME%\webapps\, sem
espaços no nome.
– Dentro do diretório do projeto, cria-se a pasta WEB-INF
– Dentro de WEB-INF, criam-se 2 pastas: lib e classes
– Dentro de WEB-INF, cria-se o arquivo web.xml (deployment
descriptor web)
© LES/PUC-Rio
Configurando o Tomcat
• As classes são colocadas no diretório:
– %TOMCAT_HOME%\webapps\DIRETÓRIO_APLICAÇÃO\WEBINF\classes
– A partir deste diretório devem ser colocadas em seus próprios
pacotes
– As libs (arquivos .jar) devem ser colocadas no diretório:
– %TOMCAT_HOME%\webapps\DIRETÓRIO_APLICAÇÃO\WEBINF\lib
© LES/PUC-Rio
Configurando o Tomcat
• Registrando os Servlets
– Os servlets devem ser chamados com seu nome completo
(pacotes e classe)
– Muitas vezes o nome se torna grande demais
– Pode-se então dar um nome ao servlet através do qual o
servidor redirecionará a chamada à classe específica
© LES/PUC-Rio
Configurando o Tomcat
• Registrando Servlets
– O arquivo web.xml localizado no diretório:
– %TOMCAT_HOME%\webapps\DIRETÓRIO_APLICAÇÃO\WEBINF
© LES/PUC-Rio
JBoss
O que é o JBoss?
• É um servidor de aplicação.
• Pode ser usado para
– Aplicações Web de missão crítica.
– Aplicações Web simples feitas com Servlets e JSP.
– Aplicações Web que usam frameworks como Struts, Java
Server Faces, Spring, etc.
– Aplicações mais complexas, envolvendo SEAM, Enterprise Java
Beans (EJB), Java Messaging (JMS), caching etc.
– Middlewares usando JMS, Corba, JMX etc.
© LES/PUC-Rio
O que é o JBoss?
• Arquitetura
© LES/PUC-Rio
O que é o JBoss?
• Arquitetura
– Consiste, basicamente, do microcontainer e beans de
inicialização, conjunto de perfis de deployment e configurações
de MBeans.
• Microcontainer
– Provê estrutura para implantar e integrar serviços corporativos
entre si e com contêineres web, contêineres EJB, deployers e
utilitários de gerenciamento.
– Implementa um modelo de objetos através de POJOs. Estes
são integrados via injeção de dependência para prover serviços
© LES/PUC-Rio
Configuração do JBoss
• Pré-requisitos para instalação
– JDK 1.5 ou 1.6
• Instalação no Linux
– Baixe o JBoss (para este curso, será o JBoss 5.1) e o
descompacte em um diretório de sua preferência
– Após o baixar e descompactar o JBoss, configure as seguintes
variáveis
• export JAVA_HOME=/caminho/para/jsdk-xxxx
• export JBOSS_HOME=/caminho/para/jboss-xxxx
• JAVA_HOME /bin e JBOSS_HOME/bin devem estar declarados no
path do sistema para executar seus scripts e programas fora dos
seus diretórios
© LES/PUC-Rio
Configuração do JBoss
• Inicialização no Linux
– Execute o script run.sh para inicializar o JBoss
– Execute shutdown.sh pará-lo
– Ao final da inicialização, o prompt de comandos deve
apresentar a mensagem “Started at ...”
• Parâmetros de inicialização
– É possível inicializar o JBoss com diferentes configurações de
perfis
– Cada configuração permite definir perfis de servidores que
podem oferecer diferentes serviços e ambientes para
deployment de aplicações
© LES/PUC-Rio
LOG
© LES/PUC-Rio
Configuração do JBoss
Em geral,
é usado este
perfil
© LES/PUC-Rio
Configuração do JBoss
• Parâmetros de inicialização
– Linha de comando para escolher perfil (tipo) de deployment
• “run.sh -c <perfil>”, onde os principais valores <perfil> são:
– default: suporta a maior parte das APIs de J2EE (JSF e EJB, por
exemplo)
– all: suporte a todos os recursos corporativos, como RMI, clustering e
outros serviços para aplicações corporativas
– web: específico para suportar aplicações web, com um contêiner web.
Prevê Web profile do J2EE 6.
– minimal: sem suporte ao J2EE (sem contêineres Web e EJB), inicializa
serviços de logging, JNDI e o scanner de novos deploys somente.
» Oferece possibilidade. Mais leve e útil para implementar servidores
customizados com os serviços desejados.
– standard: configuração básica de J2EE 5.
• shutdown.sh: pára o JBoss
© LES/PUC-Rio
Configuração do JBoss
– Essas configurações se encontram abaixo de <diretório-dojboss>/server
– Locais com as configurações dos serviços suportados no perfil
• <JBoss_Home>/server/<perfil>/deployers
• <JBoss_Home>/server/<perfil>/deploy
• Parâmetros de inicialização
– Linha de comando para inicializar o servidor em um IP ou host
no qual responderá às requisições
• “run.sh -b <nome do host ou IP>”
© LES/PUC-Rio
Configuração do JBoss
• Tipos de aplicações, serviços e configurações que podem ser
implantados
– Web Application Runtime (WAR): empacotamento de aplicações
Web
– Enterprise Application Runtime (EAR): empacotamento de
aplicações corporativas que incluem aplicações Web, EJB e
definições de configurações como application.xml e jbossapp.xml
– Service Application Runtime (SAR): serviços internos
– Arquivos “*-ds.xml”: configurações de bancos de dados
© LES/PUC-Rio
Configuração do JBoss
• Tipos de aplicações, serviços e configurações que podem ser
implantados
– XML para definição de serviços MBean, os quais podem estar em
arquivos JAR em JBOSS_HOME/server/<perfil>/deploy ou
JBOSS_HOME/server/<perfil>/lib
– JAR com EJBs e outros objetos de serviço
• Após sua inicialização, o JBoss monitora
JBOSS_HOME/server/<perfil>/deploy procurando por
empacotamentos colocados pelo usuários. Caso haja um novo, ele
será expandido e implantado automaticamente.
© LES/PUC-Rio
Configuração do JBoss
• Estrutura de diretórios
– Para cada configuração em <JBoss_Home>/server/<perfil>, existe a
seguinte estrutura de diretórios
Diretório
Descrição
conf
Contém o bootstrap.xml, que define os componentes (beans) do
núcleo do servidor, os quais estarão ativos enquanto o servidor
estiver executando.
data
Serve para persistir conteúdo no sistema de arquivos, como
bancos de dados de teste.
deploy
Contém as aplicações e serviços (em JARs,WARs e EARs). Estes
podem ser implatandos ou reimplantados mesmo em tempo de
execução quando copiados neste diretório (hot deployment).
© LES/PUC-Rio
Configuração do JBoss
• Estrutura de diretórios
Diretório
Descrição
lib
Contém bibliotecas (JARs) das aplicações dentro do perfil de deployment atual.
Para compartilhar bibliotecas entre todos os perfiis de deployment, os JARs
devem ser colocados em <JBoss_Home>/common/lib.
log
Contém os logs do servidor e das aplicações, os quais podem ser configurados
em conf/jboss-log4j.xml.
tmp
Usado para armazenamento temporário pelos serviços do Jboss como, por
exemplo, o deployer, que descompacta temporariamente as aplicações e
serviços neste diretório.
work
Diretório usado pelo Tomcat para compilação de JSPs.
© LES/PUC-Rio
Eclipse
Criação de aplicação Web no Eclipse
• Crie um novo projeto do tipo Dynamic Web Project.
© LES/PUC-Rio
Criação de aplicação Web no Eclipse
• Configure um contêiner Web ou servidor de aplicação em
que será executada a aplicação.
• Para este curso, utilizaremos o Tomcat 5.5
© LES/PUC-Rio
Criação de aplicação Web no Eclipse
Coloque o nome do projeto da aplicação Web.
Escolha uma configuração de
contêiner ou servidor de
aplicações Web.
© LES/PUC-Rio
Criação de aplicação Web no Eclipse
Clique em Browse para procurar o diretório
onde está instalado o container ou servidor
de aplicações web
© LES/PUC-Rio
Criação de aplicação Web no Eclipse
Indique o diretório do servidor de aplicações.
Escolha um contêiner ou
servidor de aplicações Web.
© LES/PUC-Rio
Criação de aplicação Web no Eclipse
• Estrutura básica de um projeto Web
O Eclipse monta a
aplicação no TomCat
com esta estrutura
de pastas e copia esta
classe dentro de
WEB-INF/classes dentro
de seu pacote
Diretório para conteúdo Web:
páginas, css, bibliotecas usadas
Diretório de bibliotecas
Deployment descriptor
© LES/PUC-Rio
Criação de aplicação Web no Eclipse
• Estrutura de um Dynamic Web Project
Bibliotecas em
WEB-INF/lib
© LES/PUC-Rio
Criação de aplicação Web
• Páginas devem ser colocadas na raiz do pacote WAR
• No projeto gerado no Eclipse, WebContent corresponde à
raiz
• Exemplo: página index.jsp
© LES/PUC-Rio
Criação de aplicação Web: web.xml
Possíveis URLs das páginas iniciais.
Identificador da servlet.
Servlet que processará requisições e gerará respostas HTTP.
URL que receberá as requisições para
a servlet cujo nome é <servlet-name>.
© LES/PUC-Rio
Criação de aplicação Web: Servlet
Responde a requisições HTTP GET
para esta servlet
Responde a requisições HTTP POST
para esta servlet
© LES/PUC-Rio
Criação de aplicação Web no Eclipse: inicialização do
TomCat
Fazer debug da aplicação
no servidor
Iniciar o servidor
© LES/PUC-Rio
Parar o servidor
Criação de aplicação Web: acesso
• Resposta da Servlet
• Resposta da página index.jsp
© LES/PUC-Rio
Download